{
  "id": "766cab2a39da6b42448cca7adc61f4b1",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.12",
  "solcLongVersion": "0.6.12+commit.27d51765",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/interfaces/IMasterChef.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\n\ninterface IMasterChef {\n    using BoringERC20 for IERC20;\n    struct UserInfo {\n        uint256 amount; // How many LP tokens the user has provided.\n        uint256 rewardDebt; // Reward debt. See explanation below.\n    }\n\n    struct PoolInfo {\n        IERC20 lpToken; // Address of LP token contract.\n        uint256 allocPoint; // How many allocation points assigned to this pool. PICHI to distribute per block.\n        uint256 lastRewardBlock; // Last block number that PICHI distribution occurs.\n        uint256 accPichiPerShare; // Accumulated PICHI per share, times 1e12. See below.\n    }\n\n    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);\n\n    function totalAllocPoint() external view returns (uint256);\n\n    function deposit(uint256 _pid, uint256 _amount) external;\n}\n"
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "content": "// SPDX-License-Identifier: UNLICENSED\r\npragma solidity 0.6.12;\r\n\r\nimport \"../interfaces/IERC20.sol\";\r\n\r\nlibrary BoringERC20 {\r\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\r\n        return success && data.length > 0 ? abi.decode(data, (string)) : \"???\";\r\n    }\r\n\r\n    function safeName(IERC20 token) internal view returns(string memory) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\r\n        return success && data.length > 0 ? abi.decode(data, (string)) : \"???\";\r\n    }\r\n\r\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\r\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\r\n    }\r\n\r\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\r\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \"BoringERC20: Transfer failed\");\r\n    }\r\n\r\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\r\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \"BoringERC20: TransferFrom failed\");\r\n    }\r\n}"
      },
      "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.6.12;\r\n\r\ninterface IERC20 {\r\n    function totalSupply() external view returns (uint256);\r\n    function balanceOf(address account) external view returns (uint256);\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n\r\n    // EIP 2612\r\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\r\n}"
      },
      "contracts/MiniChefV2.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\";\nimport \"./libraries/SignedSafeMath.sol\";\nimport \"./interfaces/IRewarder.sol\";\nimport \"./interfaces/IMasterChef.sol\";\n\ninterface IMigratorChef {\n    // Take the current LP token address and return the new LP token address.\n    // Migrator should have full access to the caller's LP token.\n    function migrate(IERC20 token) external returns (IERC20);\n}\n\n/// @dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\n/// It is the only address with minting rights for PICHI.\n/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\n/// that is deposited into the MasterChef V1 (MCV1) contract.\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\ncontract MiniChefV2 is BoringOwnable, BoringBatchable {\n    using BoringMath for uint256;\n    using BoringMath128 for uint128;\n    using BoringERC20 for IERC20;\n    using SignedSafeMath for int256;\n\n    /// @dev Info of each MCV2 user.\n    /// `amount` LP token amount the user has provided.\n    /// `rewardDebt` The amount of PICHI entitled to the user.\n    struct UserInfo {\n        uint256 amount;\n        int256 rewardDebt;\n    }\n\n    /// @dev Info of each MCV2 pool.\n    /// `allocPoint` The amount of allocation points assigned to the pool.\n    /// Also known as the amount of PICHI to distribute per block.\n    struct PoolInfo {\n        uint128 accPichiPerShare;\n        uint64 lastRewardTime;\n        uint64 allocPoint;\n    }\n\n    /// @dev Address of PICHI contract.\n    IERC20 public immutable PICHI;\n    // @dev The migrator contract. It has a lot of power. Can only be set through governance (owner).\n    IMigratorChef public migrator;\n\n    /// @dev Info of each MCV2 pool.\n    PoolInfo[] public poolInfo;\n    /// @dev Address of the LP token for each MCV2 pool.\n    IERC20[] public lpToken;\n    /// @dev Address of each `IRewarder` contract in MCV2.\n    IRewarder[] public rewarder;\n\n    /// @dev Info of each user that stakes LP tokens.\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\n    uint256 public totalAllocPoint;\n\n    uint256 public pichiPerSecond;\n    uint256 private constant ACC_PICHI_PRECISION = 1e12;\n\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accPichiPerShare);\n    event LogPichiPerSecond(uint256 pichiPerSecond);\n\n    /// @param _pichi The PICHI token contract address.\n    constructor(IERC20 _pichi) public {\n        PICHI = _pichi;\n    }\n\n    /// @dev Returns the number of MCV2 pools.\n    function poolLength() public view returns (uint256 pools) {\n        pools = poolInfo.length;\n    }\n\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n    /// @param allocPoint AP of the new pool.\n    /// @param _lpToken Address of the LP ERC-20 token.\n    /// @param _rewarder Address of the rewarder delegate.\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\n        lpToken.push(_lpToken);\n        rewarder.push(_rewarder);\n\n        poolInfo.push(PoolInfo({\n            allocPoint: allocPoint.to64(),\n            lastRewardTime: block.timestamp.to64(),\n            accPichiPerShare: 0\n        }));\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\n    }\n\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _allocPoint New AP of the pool.\n    /// @param _rewarder Address of the rewarder delegate.\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\n        if (overwrite) { rewarder[_pid] = _rewarder; }\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\n    }\n\n    /// @dev Sets the pichi per second to be distributed. Can only be called by the owner.\n    /// @param _pichiPerSecond The amount of Pichi to be distributed per second.\n    function setPichiPerSecond(uint256 _pichiPerSecond) public onlyOwner {\n        pichiPerSecond = _pichiPerSecond;\n        emit LogPichiPerSecond(_pichiPerSecond);\n    }\n\n    /// @dev Set the `migrator` contract. Can only be called by the owner.\n    /// @param _migrator The contract address to set.\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\n        migrator = _migrator;\n    }\n\n    /// @dev Migrate LP token to another LP contract through the `migrator` contract.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    function migrate(uint256 _pid) public {\n        require(address(migrator) != address(0), \"MasterChefV2: no migrator set\");\n        IERC20 _lpToken = lpToken[_pid];\n        uint256 bal = _lpToken.balanceOf(address(this));\n        _lpToken.approve(address(migrator), bal);\n        IERC20 newLpToken = migrator.migrate(_lpToken);\n        require(bal == newLpToken.balanceOf(address(this)), \"MasterChefV2: migrated balance must match\");\n        lpToken[_pid] = newLpToken;\n    }\n\n    /// @dev View function to see pending PICHI on frontend.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _user Address of user.\n    /// @return pending PICHI reward for a given user.\n    function pendingPichi(uint256 _pid, address _user) external view returns (uint256 pending) {\n        PoolInfo memory pool = poolInfo[_pid];\n        UserInfo storage user = userInfo[_pid][_user];\n        uint256 accPichiPerShare = pool.accPichiPerShare;\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\n            uint256 pichiReward = time.mul(pichiPerSecond).mul(pool.allocPoint) / totalAllocPoint;\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply);\n        }\n        pending = int256(user.amount.mul(accPichiPerShare) / ACC_PICHI_PRECISION).sub(user.rewardDebt).toUInt256();\n    }\n\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\n    function massUpdatePools(uint256[] calldata pids) external {\n        uint256 len = pids.length;\n        for (uint256 i = 0; i < len; ++i) {\n            updatePool(pids[i]);\n        }\n    }\n\n    /// @dev Update reward variables of the given pool.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @return pool Returns the pool that was updated.\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\n        pool = poolInfo[pid];\n        if (block.timestamp > pool.lastRewardTime) {\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\n            if (lpSupply > 0) {\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\n                uint256 pichiReward = time.mul(pichiPerSecond).mul(pool.allocPoint) / totalAllocPoint;\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply).to128());\n            }\n            pool.lastRewardTime = block.timestamp.to64();\n            poolInfo[pid] = pool;\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accPichiPerShare);\n        }\n    }\n\n    /// @dev Deposit LP tokens to MCV2 for PICHI allocation.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to deposit.\n    /// @param to The receiver of `amount` deposit benefit.\n    function deposit(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][to];\n\n        // Effects\n        user.amount = user.amount.add(amount);\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\n\n        // Interactions\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward(pid, to, to, 0, user.amount);\n        }\n\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\n\n        emit Deposit(msg.sender, pid, amount, to);\n    }\n\n    /// @dev Withdraw LP tokens from MCV2.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to withdraw.\n    /// @param to Receiver of the LP tokens.\n    function withdraw(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n\n        // Effects\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\n        user.amount = user.amount.sub(amount);\n\n        // Interactions\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, user.amount);\n        }\n        \n        lpToken[pid].safeTransfer(to, amount);\n\n        emit Withdraw(msg.sender, pid, amount, to);\n    }\n\n    /// @dev Harvest proceeds for transaction sender to `to`.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param to Receiver of PICHI rewards.\n    function harvest(uint256 pid, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\n\n        // Effects\n        user.rewardDebt = accumulatedPichi;\n\n        // Interactions\n        if (_pendingPichi != 0) {\n            PICHI.safeTransfer(to, _pendingPichi);\n        }\n        \n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward( pid, msg.sender, to, _pendingPichi, user.amount);\n        }\n\n        emit Harvest(msg.sender, pid, _pendingPichi);\n    }\n    \n    /// @dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to withdraw.\n    /// @param to Receiver of the LP tokens and PICHI rewards.\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\n\n        // Effects\n        user.rewardDebt = accumulatedPichi.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\n        user.amount = user.amount.sub(amount);\n        \n        // Interactions\n        PICHI.safeTransfer(to, _pendingPichi);\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward(pid, msg.sender, to, _pendingPichi, user.amount);\n        }\n\n        lpToken[pid].safeTransfer(to, amount);\n\n        emit Withdraw(msg.sender, pid, amount, to);\n        emit Harvest(msg.sender, pid, _pendingPichi);\n    }\n\n    /// @dev Withdraw without caring about rewards. EMERGENCY ONLY.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param to Receiver of the LP tokens.\n    function emergencyWithdraw(uint256 pid, address to) public {\n        UserInfo storage user = userInfo[pid][msg.sender];\n        uint256 amount = user.amount;\n        user.amount = 0;\n        user.rewardDebt = 0;\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, 0);\n        }\n\n        // Note: transfer can fail or succeed if `amount` is zero.\n        lpToken[pid].safeTransfer(to, amount);\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\n    }\n}\n"
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.6.12;\r\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\r\nlibrary BoringMath {\r\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \"BoringMath: Mul Overflow\");}\r\n    function to128(uint256 a) internal pure returns (uint128 c) {\r\n        require(a <= uint128(-1), \"BoringMath: uint128 Overflow\");\r\n        c = uint128(a);\r\n    }\r\n    function to64(uint256 a) internal pure returns (uint64 c) {\r\n        require(a <= uint64(-1), \"BoringMath: uint64 Overflow\");\r\n        c = uint64(a);\r\n    }\r\n    function to32(uint256 a) internal pure returns (uint32 c) {\r\n        require(a <= uint32(-1), \"BoringMath: uint32 Overflow\");\r\n        c = uint32(a);\r\n    }\r\n}\r\n\r\nlibrary BoringMath128 {\r\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}\r\n\r\nlibrary BoringMath64 {\r\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}\r\n\r\nlibrary BoringMath32 {\r\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}"
      },
      "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol": {
        "content": "// SPDX-License-Identifier: UNLICENSED\r\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\r\n\r\n// P1 - P3: OK\r\npragma solidity 0.6.12;\r\npragma experimental ABIEncoderV2;\r\n// solhint-disable avoid-low-level-calls\r\n\r\nimport \"./libraries/BoringERC20.sol\";\r\n\r\n// T1 - T4: OK\r\ncontract BaseBoringBatchable {\r\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\r\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\r\n        if (_returnData.length < 68) return \"Transaction reverted silently\";\r\n\r\n        assembly {\r\n            // Slice the sighash.\r\n            _returnData := add(_returnData, 0x04)\r\n        }\r\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\r\n    }    \r\n    \r\n    // F3 - F9: OK\r\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\r\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\r\n    // C1 - C21: OK\r\n    // C3: The length of the loop is fully under user control, so can't be exploited\r\n    // C7: Delegatecall is only used on the same contract, so it's safe\r\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\r\n        // Interactions\r\n        successes = new bool[](calls.length);\r\n        results = new bytes[](calls.length);\r\n        for (uint256 i = 0; i < calls.length; i++) {\r\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\r\n            require(success || !revertOnFail, _getRevertMsg(result));\r\n            successes[i] = success;\r\n            results[i] = result;\r\n        }\r\n    }\r\n}\r\n\r\n// T1 - T4: OK\r\ncontract BoringBatchable is BaseBoringBatchable {\r\n    // F1 - F9: OK\r\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\r\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\r\n    // C1 - C21: OK\r\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\r\n        // Interactions\r\n        // X1 - X5\r\n        token.permit(from, to, amount, deadline, v, r, s);\r\n    }\r\n}"
      },
      "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\r\n\r\n// P1 - P3: OK\r\npragma solidity 0.6.12;\r\n\r\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\r\n// Edited by BoringCrypto\r\n\r\n// T1 - T4: OK\r\ncontract BoringOwnableData {\r\n    // V1 - V5: OK\r\n    address public owner;\r\n    // V1 - V5: OK\r\n    address public pendingOwner;\r\n}\r\n\r\n// T1 - T4: OK\r\ncontract BoringOwnable is BoringOwnableData {\r\n    // E1: OK\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n    constructor () public {\r\n        owner = msg.sender;\r\n        emit OwnershipTransferred(address(0), msg.sender);\r\n    }\r\n\r\n    // F1 - F9: OK\r\n    // C1 - C21: OK\r\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\r\n        if (direct) {\r\n            // Checks\r\n            require(newOwner != address(0) || renounce, \"Ownable: zero address\");\r\n\r\n            // Effects\r\n            emit OwnershipTransferred(owner, newOwner);\r\n            owner = newOwner;\r\n            pendingOwner = address(0);\r\n        } else {\r\n            // Effects\r\n            pendingOwner = newOwner;\r\n        }\r\n    }\r\n\r\n    // F1 - F9: OK\r\n    // C1 - C21: OK\r\n    function claimOwnership() public {\r\n        address _pendingOwner = pendingOwner;\r\n        \r\n        // Checks\r\n        require(msg.sender == _pendingOwner, \"Ownable: caller != pending owner\");\r\n\r\n        // Effects\r\n        emit OwnershipTransferred(owner, _pendingOwner);\r\n        owner = _pendingOwner;\r\n        pendingOwner = address(0);\r\n    }\r\n\r\n    // M1 - M5: OK\r\n    // C1 - C21: OK\r\n    modifier onlyOwner() {\r\n        require(msg.sender == owner, \"Ownable: caller is not the owner\");\r\n        _;\r\n    }\r\n}"
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\n\nlibrary SignedSafeMath {\n    int256 private constant _INT256_MIN = -2**255;\n\n    /**\n     * @dev Returns the multiplication of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(int256 a, int256 b) internal pure returns (int256) {\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n        // benefit is lost if 'b' is also tested.\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n        if (a == 0) {\n            return 0;\n        }\n\n        require(!(a == -1 && b == _INT256_MIN), \"SignedSafeMath: multiplication overflow\");\n\n        int256 c = a * b;\n        require(c / a == b, \"SignedSafeMath: multiplication overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the integer division of two signed integers. Reverts on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(int256 a, int256 b) internal pure returns (int256) {\n        require(b != 0, \"SignedSafeMath: division by zero\");\n        require(!(b == -1 && a == _INT256_MIN), \"SignedSafeMath: division overflow\");\n\n        int256 c = a / b;\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the subtraction of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(int256 a, int256 b) internal pure returns (int256) {\n        int256 c = a - b;\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \"SignedSafeMath: subtraction overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the addition of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(int256 a, int256 b) internal pure returns (int256) {\n        int256 c = a + b;\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \"SignedSafeMath: addition overflow\");\n\n        return c;\n    }\n\n    function toUInt256(int256 a) internal pure returns (uint256) {\n        require(a >= 0, \"Integer < 0\");\n        return uint256(a);\n    }\n}\n"
      },
      "contracts/interfaces/IRewarder.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\n\ninterface IRewarder {\n    using BoringERC20 for IERC20;\n\n    function onPichiReward(\n        uint256 pid,\n        address user,\n        address recipient,\n        uint256 pichiAmount,\n        uint256 newLpAmount\n    ) external;\n\n    function pendingTokens(\n        uint256 pid,\n        address user,\n        uint256 pichiAmount\n    ) external view returns (IERC20[] memory, uint256[] memory);\n}\n"
      },
      "contracts/mocks/RewarderMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\nimport \"../interfaces/IRewarder.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\n\ncontract RewarderMock is IRewarder {\n    using BoringMath for uint256;\n    using BoringERC20 for IERC20;\n    uint256 private immutable rewardMultiplier;\n    IERC20 private immutable rewardToken;\n    uint256 private constant REWARD_TOKEN_DIVISOR = 1e18;\n    address private immutable MASTERCHEF_V2;\n\n    constructor(\n        uint256 _rewardMultiplier,\n        IERC20 _rewardToken,\n        address _MASTERCHEF_V2\n    ) public {\n        rewardMultiplier = _rewardMultiplier;\n        rewardToken = _rewardToken;\n        MASTERCHEF_V2 = _MASTERCHEF_V2;\n    }\n\n    function onPichiReward(\n        uint256,\n        address user,\n        address to,\n        uint256 pichiAmount,\n        uint256\n    ) external override onlyMCV2 {\n        uint256 pendingReward = pichiAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\n        uint256 rewardBal = rewardToken.balanceOf(address(this));\n        if (pendingReward > rewardBal) {\n            rewardToken.safeTransfer(to, rewardBal);\n        } else {\n            rewardToken.safeTransfer(to, pendingReward);\n        }\n    }\n\n    function pendingTokens(\n        uint256 pid,\n        address user,\n        uint256 pichiAmount\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n        IERC20[] memory _rewardTokens = new IERC20[](1);\n        _rewardTokens[0] = (rewardToken);\n        uint256[] memory _rewardAmounts = new uint256[](1);\n        _rewardAmounts[0] = pichiAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\n        return (_rewardTokens, _rewardAmounts);\n    }\n\n    modifier onlyMCV2 {\n        require(msg.sender == MASTERCHEF_V2, \"Only MCV2 can call this function.\");\n        _;\n    }\n}\n"
      },
      "contracts/mocks/ComplexRewarderTime.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\nimport \"../interfaces/IRewarder.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\";\nimport \"../MasterChefV2.sol\";\n\n/// @author @0xKeno\ncontract ComplexRewarderTime is IRewarder, BoringOwnable {\n    using BoringMath for uint256;\n    using BoringMath128 for uint128;\n    using BoringERC20 for IERC20;\n\n    IERC20 private immutable rewardToken;\n\n    /// @dev Info of each MCV2 user.\n    /// `amount` LP token amount the user has provided.\n    /// `rewardDebt` The amount of PICHI entitled to the user.\n    struct UserInfo {\n        uint256 amount;\n        uint256 rewardDebt;\n    }\n\n    /// @dev Info of each MCV2 pool.\n    /// `allocPoint` The amount of allocation points assigned to the pool.\n    /// Also known as the amount of PICHI to distribute per block.\n    struct PoolInfo {\n        uint128 accPichiPerShare;\n        uint64 lastRewardTime;\n        uint64 allocPoint;\n    }\n\n    /// @dev Info of each pool.\n    mapping(uint256 => PoolInfo) public poolInfo;\n\n    uint256[] public poolIds;\n\n    /// @dev Info of each user that stakes LP tokens.\n    mapping(uint256 => mapping(address => UserInfo)) public userInfo;\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\n    uint256 totalAllocPoint;\n\n    uint256 public rewardPerSecond;\n    uint256 private constant ACC_TOKEN_PRECISION = 1e12;\n\n    address private immutable MASTERCHEF_V2;\n\n    event LogOnReward(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint);\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint);\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accPichiPerShare);\n    event LogRewardPerSecond(uint256 rewardPerSecond);\n    event LogInit();\n\n    constructor(\n        IERC20 _rewardToken,\n        uint256 _rewardPerSecond,\n        address _MASTERCHEF_V2\n    ) public {\n        rewardToken = _rewardToken;\n        rewardPerSecond = _rewardPerSecond;\n        MASTERCHEF_V2 = _MASTERCHEF_V2;\n    }\n\n    function onPichiReward(\n        uint256 pid,\n        address _user,\n        address to,\n        uint256,\n        uint256 lpToken\n    ) external override onlyMCV2 {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][_user];\n        uint256 pending;\n        if (user.amount > 0) {\n            pending = (user.amount.mul(pool.accPichiPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\n            rewardToken.safeTransfer(to, pending);\n        }\n        user.amount = lpToken;\n        user.rewardDebt = lpToken.mul(pool.accPichiPerShare) / ACC_TOKEN_PRECISION;\n        emit LogOnReward(_user, pid, pending, to);\n    }\n\n    function pendingTokens(\n        uint256 pid,\n        address user,\n        uint256\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n        IERC20[] memory _rewardTokens = new IERC20[](1);\n        _rewardTokens[0] = (rewardToken);\n        uint256[] memory _rewardAmounts = new uint256[](1);\n        _rewardAmounts[0] = pendingToken(pid, user);\n        return (_rewardTokens, _rewardAmounts);\n    }\n\n    /// @dev Sets the pichi per second to be distributed. Can only be called by the owner.\n    /// @param _rewardPerSecond The amount of Pichi to be distributed per second.\n    function setRewardPerSecond(uint256 _rewardPerSecond) public onlyOwner {\n        rewardPerSecond = _rewardPerSecond;\n        emit LogRewardPerSecond(_rewardPerSecond);\n    }\n\n    modifier onlyMCV2 {\n        require(msg.sender == MASTERCHEF_V2, \"Only MCV2 can call this function.\");\n        _;\n    }\n\n    /// @dev Returns the number of MCV2 pools.\n    function poolLength() public view returns (uint256 pools) {\n        pools = poolIds.length;\n    }\n\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n    /// @param allocPoint AP of the new pool.\n    /// @param _pid Pid on MCV2\n    function add(uint256 allocPoint, uint256 _pid) public onlyOwner {\n        require(poolInfo[_pid].lastRewardTime == 0, \"Pool already exists\");\n        uint256 lastRewardTime = block.timestamp;\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\n\n        poolInfo[_pid] = PoolInfo({allocPoint: allocPoint.to64(), lastRewardTime: lastRewardTime.to64(), accPichiPerShare: 0});\n        poolIds.push(_pid);\n        emit LogPoolAddition(_pid, allocPoint);\n    }\n\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _allocPoint New AP of the pool.\n    function set(uint256 _pid, uint256 _allocPoint) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\n        emit LogSetPool(_pid, _allocPoint);\n    }\n\n    /// @dev View function to see pending Token\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _user Address of user.\n    /// @return pending PICHI reward for a given user.\n    function pendingToken(uint256 _pid, address _user) public view returns (uint256 pending) {\n        PoolInfo memory pool = poolInfo[_pid];\n        UserInfo storage user = userInfo[_pid][_user];\n        uint256 accPichiPerShare = pool.accPichiPerShare;\n        uint256 lpSupply = MasterChefV2(MASTERCHEF_V2).lpToken(_pid).balanceOf(MASTERCHEF_V2);\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\n            uint256 pichiReward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_TOKEN_PRECISION) / lpSupply);\n        }\n        pending = (user.amount.mul(accPichiPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\n    }\n\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\n    function massUpdatePools(uint256[] calldata pids) external {\n        uint256 len = pids.length;\n        for (uint256 i = 0; i < len; ++i) {\n            updatePool(pids[i]);\n        }\n    }\n\n    /// @dev Update reward variables of the given pool.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @return pool Returns the pool that was updated.\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\n        pool = poolInfo[pid];\n        if (block.timestamp > pool.lastRewardTime) {\n            uint256 lpSupply = MasterChefV2(MASTERCHEF_V2).lpToken(pid).balanceOf(MASTERCHEF_V2);\n\n            if (lpSupply > 0) {\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\n                uint256 pichiReward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_TOKEN_PRECISION) / lpSupply).to128());\n            }\n            pool.lastRewardTime = block.timestamp.to64();\n            poolInfo[pid] = pool;\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accPichiPerShare);\n        }\n    }\n}\n"
      },
      "contracts/MasterChefV2.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\";\nimport \"./libraries/SignedSafeMath.sol\";\nimport \"./interfaces/IRewarder.sol\";\nimport \"./interfaces/IMasterChef.sol\";\n\ninterface IMigratorChef {\n    // Take the current LP token address and return the new LP token address.\n    // Migrator should have full access to the caller's LP token.\n    function migrate(IERC20 token) external returns (IERC20);\n}\n\n/// @dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\n/// It is the only address with minting rights for PICHI.\n/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\n/// that is deposited into the MasterChef V1 (MCV1) contract.\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\ncontract MasterChefV2 is BoringOwnable, BoringBatchable {\n    using BoringMath for uint256;\n    using BoringMath128 for uint128;\n    using BoringERC20 for IERC20;\n    using SignedSafeMath for int256;\n\n    /// @dev Info of each MCV2 user.\n    /// `amount` LP token amount the user has provided.\n    /// `rewardDebt` The amount of PICHI entitled to the user.\n    struct UserInfo {\n        uint256 amount;\n        int256 rewardDebt;\n    }\n\n    /// @dev Info of each MCV2 pool.\n    /// `allocPoint` The amount of allocation points assigned to the pool.\n    /// Also known as the amount of PICHI to distribute per block.\n    struct PoolInfo {\n        uint128 accPichiPerShare;\n        uint64 lastRewardBlock;\n        uint64 allocPoint;\n    }\n\n    /// @dev Address of MCV1 contract.\n    IMasterChef public immutable MASTER_CHEF;\n    /// @dev Address of PICHI contract.\n    IERC20 public immutable PICHI;\n    /// @dev The index of MCV2 master pool in MCV1.\n    uint256 public immutable MASTER_PID;\n    // @dev The migrator contract. It has a lot of power. Can only be set through governance (owner).\n    IMigratorChef public migrator;\n\n    /// @dev Info of each MCV2 pool.\n    PoolInfo[] public poolInfo;\n    /// @dev Address of the LP token for each MCV2 pool.\n    IERC20[] public lpToken;\n    /// @dev Address of each `IRewarder` contract in MCV2.\n    IRewarder[] public rewarder;\n\n    /// @dev Info of each user that stakes LP tokens.\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\n    uint256 public totalAllocPoint;\n\n    uint256 private constant MASTERCHEF_PICHI_PER_BLOCK = 1e20;\n    uint256 private constant ACC_PICHI_PRECISION = 1e12;\n\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accPichiPerShare);\n    event LogInit();\n\n    /// @param _MASTER_CHEF The PolyCityDex MCV1 contract address.\n    /// @param _pichi The PICHI token contract address.\n    /// @param _MASTER_PID The pool ID of the dummy token on the base MCV1 contract.\n    constructor(IMasterChef _MASTER_CHEF, IERC20 _pichi, uint256 _MASTER_PID) public {\n        MASTER_CHEF = _MASTER_CHEF;\n        PICHI = _pichi;\n        MASTER_PID = _MASTER_PID;\n    }\n\n    /// @dev Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting rights for PICHI.\n    /// Any balance of transaction sender in `dummyToken` is transferred.\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\n    function init(IERC20 dummyToken) external {\n        uint256 balance = dummyToken.balanceOf(msg.sender);\n        require(balance != 0, \"MasterChefV2: Balance must exceed 0\");\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\n        dummyToken.approve(address(MASTER_CHEF), balance);\n        MASTER_CHEF.deposit(MASTER_PID, balance);\n        emit LogInit();\n    }\n\n    /// @dev Returns the number of MCV2 pools.\n    function poolLength() public view returns (uint256 pools) {\n        pools = poolInfo.length;\n    }\n\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n    /// @param allocPoint AP of the new pool.\n    /// @param _lpToken Address of the LP ERC-20 token.\n    /// @param _rewarder Address of the rewarder delegate.\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\n        uint256 lastRewardBlock = block.number;\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\n        lpToken.push(_lpToken);\n        rewarder.push(_rewarder);\n\n        poolInfo.push(PoolInfo({\n            allocPoint: allocPoint.to64(),\n            lastRewardBlock: lastRewardBlock.to64(),\n            accPichiPerShare: 0\n        }));\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\n    }\n\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _allocPoint New AP of the pool.\n    /// @param _rewarder Address of the rewarder delegate.\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\n        if (overwrite) { rewarder[_pid] = _rewarder; }\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\n    }\n\n    /// @dev Set the `migrator` contract. Can only be called by the owner.\n    /// @param _migrator The contract address to set.\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\n        migrator = _migrator;\n    }\n\n    /// @dev Migrate LP token to another LP contract through the `migrator` contract.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    function migrate(uint256 _pid) public {\n        require(address(migrator) != address(0), \"MasterChefV2: no migrator set\");\n        IERC20 _lpToken = lpToken[_pid];\n        uint256 bal = _lpToken.balanceOf(address(this));\n        _lpToken.approve(address(migrator), bal);\n        IERC20 newLpToken = migrator.migrate(_lpToken);\n        require(bal == newLpToken.balanceOf(address(this)), \"MasterChefV2: migrated balance must match\");\n        lpToken[_pid] = newLpToken;\n    }\n\n    /// @dev View function to see pending PICHI on frontend.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _user Address of user.\n    /// @return pending PICHI reward for a given user.\n    function pendingPichi(uint256 _pid, address _user) external view returns (uint256 pending) {\n        PoolInfo memory pool = poolInfo[_pid];\n        UserInfo storage user = userInfo[_pid][_user];\n        uint256 accPichiPerShare = pool.accPichiPerShare;\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\n            uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply);\n        }\n        pending = int256(user.amount.mul(accPichiPerShare) / ACC_PICHI_PRECISION).sub(user.rewardDebt).toUInt256();\n    }\n\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\n    function massUpdatePools(uint256[] calldata pids) external {\n        uint256 len = pids.length;\n        for (uint256 i = 0; i < len; ++i) {\n            updatePool(pids[i]);\n        }\n    }\n\n    /// @dev Calculates and returns the `amount` of PICHI per block.\n    function pichiPerBlock() public view returns (uint256 amount) {\n        amount = uint256(MASTERCHEF_PICHI_PER_BLOCK)\n            .mul(MASTER_CHEF.poolInfo(MASTER_PID).allocPoint) / MASTER_CHEF.totalAllocPoint();\n    }\n\n    /// @dev Update reward variables of the given pool.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @return pool Returns the pool that was updated.\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\n        pool = poolInfo[pid];\n        if (block.number > pool.lastRewardBlock) {\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\n            if (lpSupply > 0) {\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\n                uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply).to128());\n            }\n            pool.lastRewardBlock = block.number.to64();\n            poolInfo[pid] = pool;\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accPichiPerShare);\n        }\n    }\n\n    /// @dev Deposit LP tokens to MCV2 for PICHI allocation.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to deposit.\n    /// @param to The receiver of `amount` deposit benefit.\n    function deposit(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][to];\n\n        // Effects\n        user.amount = user.amount.add(amount);\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\n\n        // Interactions\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward(pid, to, to, 0, user.amount);\n        }\n\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\n\n        emit Deposit(msg.sender, pid, amount, to);\n    }\n\n    /// @dev Withdraw LP tokens from MCV2.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to withdraw.\n    /// @param to Receiver of the LP tokens.\n    function withdraw(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n\n        // Effects\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\n        user.amount = user.amount.sub(amount);\n\n        // Interactions\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, user.amount);\n        }\n        \n        lpToken[pid].safeTransfer(to, amount);\n\n        emit Withdraw(msg.sender, pid, amount, to);\n    }\n\n    /// @dev Harvest proceeds for transaction sender to `to`.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param to Receiver of PICHI rewards.\n    function harvest(uint256 pid, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\n\n        // Effects\n        user.rewardDebt = accumulatedPichi;\n\n        // Interactions\n        if (_pendingPichi != 0) {\n            PICHI.safeTransfer(to, _pendingPichi);\n        }\n        \n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward( pid, msg.sender, to, _pendingPichi, user.amount);\n        }\n\n        emit Harvest(msg.sender, pid, _pendingPichi);\n    }\n    \n    /// @dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to withdraw.\n    /// @param to Receiver of the LP tokens and PICHI rewards.\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\n\n        // Effects\n        user.rewardDebt = accumulatedPichi.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\n        user.amount = user.amount.sub(amount);\n        \n        // Interactions\n        PICHI.safeTransfer(to, _pendingPichi);\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward(pid, msg.sender, to, _pendingPichi, user.amount);\n        }\n\n        lpToken[pid].safeTransfer(to, amount);\n\n        emit Withdraw(msg.sender, pid, amount, to);\n        emit Harvest(msg.sender, pid, _pendingPichi);\n    }\n\n    /// @dev Harvests PICHI from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to this MCV2 contract.\n    function harvestFromMasterChef() public {\n        MASTER_CHEF.deposit(MASTER_PID, 0);\n    }\n\n    /// @dev Withdraw without caring about rewards. EMERGENCY ONLY.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param to Receiver of the LP tokens.\n    function emergencyWithdraw(uint256 pid, address to) public {\n        UserInfo storage user = userInfo[pid][msg.sender];\n        uint256 amount = user.amount;\n        user.amount = 0;\n        user.rewardDebt = 0;\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, 0);\n        }\n\n        // Note: transfer can fail or succeed if `amount` is zero.\n        lpToken[pid].safeTransfer(to, amount);\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\n    }\n}\n"
      },
      "contracts/mocks/ComplexRewarder.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\nimport \"../interfaces/IRewarder.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\";\nimport \"../MasterChefV2.sol\";\n\n/// @author @0xKeno\ncontract ComplexRewarder is IRewarder, BoringOwnable {\n    using BoringMath for uint256;\n    using BoringMath128 for uint128;\n    using BoringERC20 for IERC20;\n\n    IERC20 private immutable rewardToken;\n\n    /// @dev Info of each MCV2 user.\n    /// `amount` LP token amount the user has provided.\n    /// `rewardDebt` The amount of PICHI entitled to the user.\n    struct UserInfo {\n        uint256 amount;\n        uint256 rewardDebt;\n    }\n\n    /// @dev Info of each MCV2 pool.\n    /// `allocPoint` The amount of allocation points assigned to the pool.\n    /// Also known as the amount of PICHI to distribute per block.\n    struct PoolInfo {\n        uint128 accPichiPerShare;\n        uint64 lastRewardBlock;\n        uint64 allocPoint;\n    }\n\n    /// @dev Info of each pool.\n    mapping(uint256 => PoolInfo) public poolInfo;\n\n    uint256[] public poolIds;\n\n    /// @dev Info of each user that stakes LP tokens.\n    mapping(uint256 => mapping(address => UserInfo)) public userInfo;\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\n    uint256 totalAllocPoint;\n\n    uint256 public tokenPerBlock;\n    uint256 private constant ACC_TOKEN_PRECISION = 1e12;\n\n    address private immutable MASTERCHEF_V2;\n\n    event LogOnReward(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint);\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint);\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accPichiPerShare);\n    event LogInit();\n\n    constructor(\n        IERC20 _rewardToken,\n        uint256 _tokenPerBlock,\n        address _MASTERCHEF_V2\n    ) public {\n        rewardToken = _rewardToken;\n        tokenPerBlock = _tokenPerBlock;\n        MASTERCHEF_V2 = _MASTERCHEF_V2;\n    }\n\n    function onPichiReward(\n        uint256 pid,\n        address _user,\n        address to,\n        uint256,\n        uint256 lpToken\n    ) external override onlyMCV2 {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][_user];\n        uint256 pending;\n        if (user.amount > 0) {\n            pending = (user.amount.mul(pool.accPichiPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\n            rewardToken.safeTransfer(to, pending);\n        }\n        user.amount = lpToken;\n        user.rewardDebt = lpToken.mul(pool.accPichiPerShare) / ACC_TOKEN_PRECISION;\n        emit LogOnReward(_user, pid, pending, to);\n    }\n\n    function pendingTokens(\n        uint256 pid,\n        address user,\n        uint256\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n        IERC20[] memory _rewardTokens = new IERC20[](1);\n        _rewardTokens[0] = (rewardToken);\n        uint256[] memory _rewardAmounts = new uint256[](1);\n        _rewardAmounts[0] = pendingToken(pid, user);\n        return (_rewardTokens, _rewardAmounts);\n    }\n\n    modifier onlyMCV2 {\n        require(msg.sender == MASTERCHEF_V2, \"Only MCV2 can call this function.\");\n        _;\n    }\n\n    /// @dev Returns the number of MCV2 pools.\n    function poolLength() public view returns (uint256 pools) {\n        pools = poolIds.length;\n    }\n\n    /// @dev Add a new LP to the pool.  Can only be called by the owner.\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n    /// @param allocPoint AP of the new pool.\n    /// @param _pid Pid on MCV2\n    function add(uint256 allocPoint, uint256 _pid) public onlyOwner {\n        require(poolInfo[_pid].lastRewardBlock == 0, \"Pool already exists\");\n        uint256 lastRewardBlock = block.number;\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\n\n        poolInfo[_pid] = PoolInfo({allocPoint: allocPoint.to64(), lastRewardBlock: lastRewardBlock.to64(), accPichiPerShare: 0});\n        poolIds.push(_pid);\n        emit LogPoolAddition(_pid, allocPoint);\n    }\n\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _allocPoint New AP of the pool.\n    function set(uint256 _pid, uint256 _allocPoint) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\n        emit LogSetPool(_pid, _allocPoint);\n    }\n\n    /// @dev View function to see pending Token\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _user Address of user.\n    /// @return pending PICHI reward for a given user.\n    function pendingToken(uint256 _pid, address _user) public view returns (uint256 pending) {\n        PoolInfo memory pool = poolInfo[_pid];\n        UserInfo storage user = userInfo[_pid][_user];\n        uint256 accPichiPerShare = pool.accPichiPerShare;\n        uint256 lpSupply = MasterChefV2(MASTERCHEF_V2).lpToken(_pid).balanceOf(MASTERCHEF_V2);\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\n            uint256 pichiReward = blocks.mul(tokenPerBlock).mul(pool.allocPoint) / totalAllocPoint;\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_TOKEN_PRECISION) / lpSupply);\n        }\n        pending = (user.amount.mul(accPichiPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\n    }\n\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\n    function massUpdatePools(uint256[] calldata pids) external {\n        uint256 len = pids.length;\n        for (uint256 i = 0; i < len; ++i) {\n            updatePool(pids[i]);\n        }\n    }\n\n    /// @dev Update reward variables of the given pool.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @return pool Returns the pool that was updated.\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\n        pool = poolInfo[pid];\n        require(pool.lastRewardBlock != 0, \"Pool does not exist\");\n        if (block.number > pool.lastRewardBlock) {\n            uint256 lpSupply = MasterChefV2(MASTERCHEF_V2).lpToken(pid).balanceOf(MASTERCHEF_V2);\n\n            if (lpSupply > 0) {\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\n                uint256 pichiReward = blocks.mul(tokenPerBlock).mul(pool.allocPoint) / totalAllocPoint;\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_TOKEN_PRECISION) / lpSupply).to128());\n            }\n            pool.lastRewardBlock = block.number.to64();\n            poolInfo[pid] = pool;\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accPichiPerShare);\n        }\n    }\n}\n"
      },
      "contracts/mocks/RewarderBrokenMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\nimport \"../interfaces/IRewarder.sol\";\n\ncontract RewarderBrokenMock is IRewarder {\n    function onPichiReward(\n        uint256,\n        address,\n        address,\n        uint256,\n        uint256\n    ) external override {\n        revert();\n    }\n\n    function pendingTokens(\n        uint256 pid,\n        address user,\n        uint256 pichiAmount\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n        revert();\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol": {
        "BaseBoringBatchable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "calls",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "revertOnFail",
                  "type": "bool"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "successes",
                  "type": "bool[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061051a806100206000396000f3fe60806040526004361061001e5760003560e01c8063d2423b5114610023575b600080fd5b610036610031366004610250565b61004d565b6040516100449291906103ab565b60405180910390f35b6060808367ffffffffffffffff8111801561006757600080fd5b50604051908082528060200260200182016040528015610091578160200160208202803683370190505b5091508367ffffffffffffffff811180156100ab57600080fd5b506040519080825280602002602001820160405280156100df57816020015b60608152602001906001900390816100ca5790505b50905060005b848110156101df5760006060308888858181106100fe57fe5b9050602002810190610110919061045f565b60405161011e92919061039b565b600060405180830381855af49150503d8060008114610159576040519150601f19603f3d011682016040523d82523d6000602084013e61015e565b606091505b5091509150818061016d575085155b610176826101e8565b9061019d5760405162461bcd60e51b81526004016101949190610445565b60405180910390fd5b50818584815181106101ab57fe5b602002602001019015159081151581525050808484815181106101ca57fe5b602090810291909101015250506001016100e5565b50935093915050565b606060448251101561022e575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261024b565b6004820191508180602001905181019061024891906102d4565b90505b919050565b600080600060408486031215610264578283fd5b833567ffffffffffffffff8082111561027b578485fd5b818601915086601f83011261028e578485fd5b81358181111561029c578586fd5b87602080830285010111156102af578586fd5b6020928301955093505084013580151581146102c9578182fd5b809150509250925092565b6000602082840312156102e5578081fd5b815167ffffffffffffffff808211156102fc578283fd5b818401915084601f83011261030f578283fd5b81518181111561031d578384fd5b604051601f8201601f19168101602001838111828210171561033d578586fd5b604052818152838201602001871015610354578485fd5b6103658260208301602087016104b4565b9695505050505050565b600081518084526103878160208601602086016104b4565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b604080825283519082018190526000906020906060840190828701845b828110156103e65781511515845292840192908401906001016103c8565b505050838103828501528085516103fd81846104ab565b91508192508381028201848801865b8381101561043657858303855261042483835161036f565b9487019492509086019060010161040c565b50909998505050505050505050565b600060208252610458602083018461036f565b9392505050565b6000808335601e19843603018112610475578283fd5b83018035915067ffffffffffffffff82111561048f578283fd5b6020019150368190038213156104a457600080fd5b9250929050565b90815260200190565b60005b838110156104cf5781810151838201526020016104b7565b838111156104de576000848401525b5050505056fea264697066735822122023081921a5d4fa6effbd91cd9e7750a1981eece7fc9de410a0e70d694392648564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x250 JUMP JUMPDEST PUSH2 0x4D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x44 SWAP3 SWAP2 SWAP1 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x67 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 0x91 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xAB 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 0xDF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xCA JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0xFE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x110 SWAP2 SWAP1 PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11E SWAP3 SWAP2 SWAP1 PUSH2 0x39B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x159 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 0x15E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x16D JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x176 DUP3 PUSH2 0x1E8 JUMP JUMPDEST SWAP1 PUSH2 0x19D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x194 SWAP2 SWAP1 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0xE5 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x22E JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x24B JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x248 SWAP2 SWAP1 PUSH2 0x2D4 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x264 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x27B JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x29C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2AF JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2C9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2FC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x30F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x31D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x33D JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x354 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x365 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x4B4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x387 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3C8 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x3FD DUP2 DUP5 PUSH2 0x4AB JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x436 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x424 DUP4 DUP4 MLOAD PUSH2 0x36F JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x40C JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x458 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x36F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x475 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x48F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 ADDMOD NOT 0x21 0xA5 0xD4 STATICCALL PUSH15 0xFFBD91CD9E7750A1981EECE7FC9DE4 LT LOG0 0xE7 0xD PUSH10 0x4392648564736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "268:1549:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040526004361061001e5760003560e01c8063d2423b5114610023575b600080fd5b610036610031366004610250565b61004d565b6040516100449291906103ab565b60405180910390f35b6060808367ffffffffffffffff8111801561006757600080fd5b50604051908082528060200260200182016040528015610091578160200160208202803683370190505b5091508367ffffffffffffffff811180156100ab57600080fd5b506040519080825280602002602001820160405280156100df57816020015b60608152602001906001900390816100ca5790505b50905060005b848110156101df5760006060308888858181106100fe57fe5b9050602002810190610110919061045f565b60405161011e92919061039b565b600060405180830381855af49150503d8060008114610159576040519150601f19603f3d011682016040523d82523d6000602084013e61015e565b606091505b5091509150818061016d575085155b610176826101e8565b9061019d5760405162461bcd60e51b81526004016101949190610445565b60405180910390fd5b50818584815181106101ab57fe5b602002602001019015159081151581525050808484815181106101ca57fe5b602090810291909101015250506001016100e5565b50935093915050565b606060448251101561022e575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261024b565b6004820191508180602001905181019061024891906102d4565b90505b919050565b600080600060408486031215610264578283fd5b833567ffffffffffffffff8082111561027b578485fd5b818601915086601f83011261028e578485fd5b81358181111561029c578586fd5b87602080830285010111156102af578586fd5b6020928301955093505084013580151581146102c9578182fd5b809150509250925092565b6000602082840312156102e5578081fd5b815167ffffffffffffffff808211156102fc578283fd5b818401915084601f83011261030f578283fd5b81518181111561031d578384fd5b604051601f8201601f19168101602001838111828210171561033d578586fd5b604052818152838201602001871015610354578485fd5b6103658260208301602087016104b4565b9695505050505050565b600081518084526103878160208601602086016104b4565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b604080825283519082018190526000906020906060840190828701845b828110156103e65781511515845292840192908401906001016103c8565b505050838103828501528085516103fd81846104ab565b91508192508381028201848801865b8381101561043657858303855261042483835161036f565b9487019492509086019060010161040c565b50909998505050505050505050565b600060208252610458602083018461036f565b9392505050565b6000808335601e19843603018112610475578283fd5b83018035915067ffffffffffffffff82111561048f578283fd5b6020019150368190038213156104a457600080fd5b9250929050565b90815260200190565b60005b838110156104cf5781810151838201526020016104b7565b838111156104de576000848401525b5050505056fea264697066735822122023081921a5d4fa6effbd91cd9e7750a1981eece7fc9de410a0e70d694392648564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x250 JUMP JUMPDEST PUSH2 0x4D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x44 SWAP3 SWAP2 SWAP1 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x67 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 0x91 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xAB 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 0xDF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xCA JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0xFE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x110 SWAP2 SWAP1 PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11E SWAP3 SWAP2 SWAP1 PUSH2 0x39B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x159 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 0x15E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x16D JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x176 DUP3 PUSH2 0x1E8 JUMP JUMPDEST SWAP1 PUSH2 0x19D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x194 SWAP2 SWAP1 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0xE5 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x22E JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x24B JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x248 SWAP2 SWAP1 PUSH2 0x2D4 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x264 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x27B JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x29C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2AF JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2C9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2FC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x30F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x31D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x33D JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x354 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x365 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x4B4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x387 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3C8 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x3FD DUP2 DUP5 PUSH2 0x4AB JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x436 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x424 DUP4 DUP4 MLOAD PUSH2 0x36F JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x40C JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x458 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x36F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x475 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x48F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 ADDMOD NOT 0x21 0xA5 0xD4 STATICCALL PUSH15 0xFFBD91CD9E7750A1981EECE7FC9DE4 LT LOG0 0xE7 0xD PUSH10 0x4392648564736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "268:1549:0:-:0;;;;;;;;;;;;;;;;;;;;;1260:554;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;1343:23;;1451:5;1440:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1440:24:0;-1:-1:-1;1428:36:0;-1:-1:-1;1497:5:0;1485:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:35;;1526:9;1521:286;1541:16;;;1521:286;;;1580:12;1594:19;1625:4;1644:5;;1650:1;1644:8;;;;;;;;;;;;;;;;;;:::i;:::-;1617:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:74;;;;1676:7;:24;;;;1688:12;1687:13;1676:24;1702:21;1716:6;1702:13;:21::i;:::-;1668:56;;;;;-1:-1:-1;;;1668:56:0;;;;;;;;:::i;:::-;;;;;;;;;;1754:7;1739:9;1749:1;1739:12;;;;;;;;;;;;;:22;;;;;;;;;;;1789:6;1776:7;1784:1;1776:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;1559:3:0;;1521:286;;;;1260:554;;;;;;:::o;304:496::-;376:13;539:2;518:11;:18;:23;514:67;;;-1:-1:-1;543:38:0;;;;;;;;;;;;;;;;;;;514:67;685:4;672:11;668:22;653:37;;729:11;718:33;;;;;;;;;;;;:::i;:::-;711:40;;304:496;;;;:::o;976:538:-1:-;;;;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;-1:-1;;1146:12;1108:2;1204:17;1191:31;1242:18;;1234:6;1231:30;1228:2;;;-1:-1;;1264:12;1228:2;1376:6;1365:9;1361:22;;;162:3;155:4;147:6;143:17;139:27;129:2;;-1:-1;;170:12;129:2;213:6;200:20;1242:18;232:6;229:30;226:2;;;-1:-1;;262:12;226:2;357:3;306:4;;341:6;337:17;298:6;323:32;;320:41;317:2;;;-1:-1;;364:12;317:2;306:4;294:17;;;;-1:-1;1284:109;-1:-1;;1466:22;;456:20;9459:13;;9452:21;10077:32;;10067:2;;-1:-1;;10113:12;10067:2;1438:60;;;;1102:412;;;;;:::o;1521:362::-;;1646:2;1634:9;1625:7;1621:23;1617:32;1614:2;;;-1:-1;;1652:12;1614:2;1703:17;1697:24;1741:18;;1733:6;1730:30;1727:2;;;-1:-1;;1763:12;1727:2;1850:6;1839:9;1835:22;;;637:3;630:4;622:6;618:17;614:27;604:2;;-1:-1;;645:12;604:2;685:6;679:13;1741:18;7225:6;7222:30;7219:2;;;-1:-1;;7255:12;7219:2;6888;6882:9;7328;7309:17;;-1:-1;;7305:33;6914:17;;1646:2;6914:17;6974:34;;;7010:22;;;6971:62;6968:2;;;-1:-1;;7036:12;6968:2;6888;7055:22;778:21;;;878:16;;;1646:2;878:16;875:25;-1:-1;872:2;;;-1:-1;;903:12;872:2;923:39;955:6;1646:2;854:5;850:16;1646:2;820:6;816:17;923:39;:::i;:::-;1783:84;1608:275;-1:-1;;;;;;1608:275::o;4354:323::-;;4486:5;7840:12;8655:6;8650:3;8643:19;4569:52;4614:6;8692:4;8687:3;8683:14;8692:4;4595:5;4591:16;4569:52;:::i;:::-;7328:9;9984:14;-1:-1;;9980:28;4633:39;;;;8692:4;4633:39;;4434:243;-1:-1;;4434:243::o;5038:291::-;;9567:6;9562:3;9557;9544:30;9605:16;;9598:27;;;9605:16;5182:147;-1:-1;5182:147::o;5336:653::-;5603:2;5617:47;;;7840:12;;5588:18;;;8643:19;;;5336:653;;8692:4;;8683:14;;;;7530;;;5336:653;2676:251;2701:6;2698:1;2695:13;2676:251;;;2762:13;;9459;9452:21;3967:34;;2032:14;;;;8377;;;;2723:1;2716:9;2676:251;;;2680:14;;;5828:9;5822:4;5818:20;8692:4;5802:9;5798:18;5791:48;5853:126;3204:5;7840:12;3223:95;3311:6;3306:3;3223:95;:::i;:::-;3216:102;;;;;8692:4;3375:6;3371:17;3366:3;3362:27;8692:4;3469:5;7530:14;-1:-1;3508:357;3533:6;3530:1;3527:13;3508:357;;;3595:9;3589:4;3585:20;3580:3;3573:33;2180:64;2240:3;3640:6;3634:13;2180:64;:::i;:::-;3844:14;;;;3654:90;-1:-1;8377:14;;;;2723:1;3548:9;3508:357;;;-1:-1;5845:134;;5574:415;-1:-1;;;;;;;;;5574:415::o;5996:310::-;;6143:2;6164:17;6157:47;6218:78;6143:2;6132:9;6128:18;6282:6;6218:78;:::i;:::-;6210:86;6114:192;-1:-1;;;6114:192::o;6313:506::-;;;6448:11;6435:25;6499:48;;6523:8;6507:14;6503:29;6499:48;6479:18;6475:73;6465:2;;-1:-1;;6552:12;6465:2;6579:33;;6633:18;;;-1:-1;6671:18;6660:30;;6657:2;;;-1:-1;;6693:12;6657:2;6538:4;6721:13;;-1:-1;6507:14;6753:38;;;6743:49;;6740:2;;;6805:1;;6795:12;6740:2;6403:416;;;;;:::o;8528:175::-;8643:19;;;8692:4;8683:14;;8636:67::o;9640:268::-;9705:1;9712:101;9726:6;9723:1;9720:13;9712:101;;;9793:11;;;9787:18;9774:11;;;9767:39;9748:2;9741:10;9712:101;;;9828:6;9825:1;9822:13;9819:2;;;9705:1;9884:6;9879:3;9875:16;9868:27;9819:2;;9689:219;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "261200",
                "executionCost": "300",
                "totalCost": "261500"
              },
              "external": {
                "batch(bytes[],bool)": "infinite"
              },
              "internal": {
                "_getRevertMsg(bytes memory)": "infinite"
              }
            },
            "methodIdentifiers": {
              "batch(bytes[],bool)": "d2423b51"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"successes\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":\"BaseBoringBatchable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringBatchable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "calls",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "revertOnFail",
                  "type": "bool"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "successes",
                  "type": "bool[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "permitToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061069b806100206000396000f3fe6080604052600436106100295760003560e01c80637c516e941461002e578063d2423b5114610050575b600080fd5b34801561003a57600080fd5b5061004e610049366004610375565b61007a565b005b61006361005e3660046102f1565b6100ee565b604051610071929190610514565b60405180910390f35b60405163d505accf60e01b81526001600160a01b0389169063d505accf906100b2908a908a908a908a908a908a908a906004016104d3565b600060405180830381600087803b1580156100cc57600080fd5b505af11580156100e0573d6000803e3d6000fd5b505050505050505050505050565b6060808367ffffffffffffffff8111801561010857600080fd5b50604051908082528060200260200182016040528015610132578160200160208202803683370190505b5091508367ffffffffffffffff8111801561014c57600080fd5b5060405190808252806020026020018201604052801561018057816020015b606081526020019060019003908161016b5790505b50905060005b8481101561028057600060603088888581811061019f57fe5b90506020028101906101b191906105c8565b6040516101bf9291906104c3565b600060405180830381855af49150503d80600081146101fa576040519150601f19603f3d011682016040523d82523d6000602084013e6101ff565b606091505b5091509150818061020e575085155b61021782610289565b9061023e5760405162461bcd60e51b815260040161023591906105ae565b60405180910390fd5b508185848151811061024c57fe5b6020026020010190151590811515815250508084848151811061026b57fe5b60209081029190910101525050600101610186565b50935093915050565b60606044825110156102cf575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c7900000060208201526102ec565b600482019150818060200190518101906102e991906103fc565b90505b919050565b600080600060408486031215610305578283fd5b833567ffffffffffffffff8082111561031c578485fd5b818601915086601f83011261032f578485fd5b81358181111561033d578586fd5b8760208083028501011115610350578586fd5b60209283019550935050840135801515811461036a578182fd5b809150509250925092565b600080600080600080600080610100898b031215610391578384fd5b883561039c8161064d565b975060208901356103ac8161064d565b965060408901356103bc8161064d565b9550606089013594506080890135935060a089013560ff811681146103df578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561040d578081fd5b815167ffffffffffffffff80821115610424578283fd5b818401915084601f830112610437578283fd5b815181811115610445578384fd5b604051601f8201601f191681016020018381118282101715610465578586fd5b60405281815283820160200187101561047c578485fd5b61048d82602083016020870161061d565b9695505050505050565b600081518084526104af81602086016020860161061d565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b604080825283519082018190526000906020906060840190828701845b8281101561054f578151151584529284019290840190600101610531565b505050838103828501528085516105668184610614565b91508192508381028201848801865b8381101561059f57858303855261058d838351610497565b94870194925090860190600101610575565b50909998505050505050505050565b6000602082526105c16020830184610497565b9392505050565b6000808335601e198436030181126105de578283fd5b83018035915067ffffffffffffffff8211156105f8578283fd5b60200191503681900382131561060d57600080fd5b9250929050565b90815260200190565b60005b83811015610638578181015183820152602001610620565b83811115610647576000848401525b50505050565b6001600160a01b038116811461066257600080fd5b5056fea26469706673582212209a405d8730c2200d16cffbad576d07e20ce5a547fe71bf6765473c3eb8d8fbdd64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x69B DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x375 JUMP JUMPDEST PUSH2 0x7A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x5E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP3 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0xB2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x108 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 0x132 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x14C 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 0x180 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x16B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x19F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP3 SWAP2 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1FA 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 0x1FF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x20E JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x217 DUP3 PUSH2 0x289 JUMP JUMPDEST SWAP1 PUSH2 0x23E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x235 SWAP2 SWAP1 PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x26B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x186 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x2CF JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2EC JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2E9 SWAP2 SWAP1 PUSH2 0x3FC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x305 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x31C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x32F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x33D JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x350 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x36A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x391 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x3AC DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x3BC DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3DF JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x424 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x437 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x445 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x465 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x47C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x48D DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x61D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4AF DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x61D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x54F JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x531 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x566 DUP2 DUP5 PUSH2 0x614 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59F JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x58D DUP4 DUP4 MLOAD PUSH2 0x497 JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x575 JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x5C1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x497 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5DE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5F8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x638 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x620 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 BLOCKHASH 0x5D DUP8 ADDRESS 0xC2 KECCAK256 0xD AND 0xCF 0xFB 0xAD JUMPI PUSH14 0x7E20CE5A547FE71BF6765473C3E 0xB8 0xD8 0xFB 0xDD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1837:573:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106100295760003560e01c80637c516e941461002e578063d2423b5114610050575b600080fd5b34801561003a57600080fd5b5061004e610049366004610375565b61007a565b005b61006361005e3660046102f1565b6100ee565b604051610071929190610514565b60405180910390f35b60405163d505accf60e01b81526001600160a01b0389169063d505accf906100b2908a908a908a908a908a908a908a906004016104d3565b600060405180830381600087803b1580156100cc57600080fd5b505af11580156100e0573d6000803e3d6000fd5b505050505050505050505050565b6060808367ffffffffffffffff8111801561010857600080fd5b50604051908082528060200260200182016040528015610132578160200160208202803683370190505b5091508367ffffffffffffffff8111801561014c57600080fd5b5060405190808252806020026020018201604052801561018057816020015b606081526020019060019003908161016b5790505b50905060005b8481101561028057600060603088888581811061019f57fe5b90506020028101906101b191906105c8565b6040516101bf9291906104c3565b600060405180830381855af49150503d80600081146101fa576040519150601f19603f3d011682016040523d82523d6000602084013e6101ff565b606091505b5091509150818061020e575085155b61021782610289565b9061023e5760405162461bcd60e51b815260040161023591906105ae565b60405180910390fd5b508185848151811061024c57fe5b6020026020010190151590811515815250508084848151811061026b57fe5b60209081029190910101525050600101610186565b50935093915050565b60606044825110156102cf575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c7900000060208201526102ec565b600482019150818060200190518101906102e991906103fc565b90505b919050565b600080600060408486031215610305578283fd5b833567ffffffffffffffff8082111561031c578485fd5b818601915086601f83011261032f578485fd5b81358181111561033d578586fd5b8760208083028501011115610350578586fd5b60209283019550935050840135801515811461036a578182fd5b809150509250925092565b600080600080600080600080610100898b031215610391578384fd5b883561039c8161064d565b975060208901356103ac8161064d565b965060408901356103bc8161064d565b9550606089013594506080890135935060a089013560ff811681146103df578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561040d578081fd5b815167ffffffffffffffff80821115610424578283fd5b818401915084601f830112610437578283fd5b815181811115610445578384fd5b604051601f8201601f191681016020018381118282101715610465578586fd5b60405281815283820160200187101561047c578485fd5b61048d82602083016020870161061d565b9695505050505050565b600081518084526104af81602086016020860161061d565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b604080825283519082018190526000906020906060840190828701845b8281101561054f578151151584529284019290840190600101610531565b505050838103828501528085516105668184610614565b91508192508381028201848801865b8381101561059f57858303855261058d838351610497565b94870194925090860190600101610575565b50909998505050505050505050565b6000602082526105c16020830184610497565b9392505050565b6000808335601e198436030181126105de578283fd5b83018035915067ffffffffffffffff8211156105f8578283fd5b60200191503681900382131561060d57600080fd5b9250929050565b90815260200190565b60005b83811015610638578181015183820152602001610620565b83811115610647576000848401525b50505050565b6001600160a01b038116811461066257600080fd5b5056fea26469706673582212209a405d8730c2200d16cffbad576d07e20ce5a547fe71bf6765473c3eb8d8fbdd64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x375 JUMP JUMPDEST PUSH2 0x7A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x5E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP3 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0xB2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x108 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 0x132 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x14C 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 0x180 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x16B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x19F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP3 SWAP2 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1FA 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 0x1FF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x20E JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x217 DUP3 PUSH2 0x289 JUMP JUMPDEST SWAP1 PUSH2 0x23E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x235 SWAP2 SWAP1 PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x26B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x186 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x2CF JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2EC JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2E9 SWAP2 SWAP1 PUSH2 0x3FC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x305 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x31C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x32F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x33D JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x350 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x36A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x391 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x3AC DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x3BC DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3DF JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x424 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x437 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x445 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x465 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x47C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x48D DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x61D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4AF DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x61D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x54F JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x531 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x566 DUP2 DUP5 PUSH2 0x614 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59F JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x58D DUP4 DUP4 MLOAD PUSH2 0x497 JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x575 JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x5C1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x497 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5DE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5F8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x638 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x620 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 BLOCKHASH 0x5D DUP8 ADDRESS 0xC2 KECCAK256 0xD AND 0xCF 0xFB 0xAD JUMPI PUSH14 0x7E20CE5A547FE71BF6765473C3E 0xB8 0xD8 0xFB 0xDD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1837:573:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;2161:246;;;;;;;;;;-1:-1:-1;2161:246:0;;;;;:::i;:::-;;:::i;:::-;;1260:554;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2161:246;2350:49;;-1:-1:-1;;;2350:49:0;;-1:-1:-1;;;;;2350:12:0;;;;;:49;;2363:4;;2369:2;;2373:6;;2381:8;;2391:1;;2394;;2397;;2350:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:246;;;;;;;;:::o;1260:554::-;1343:23;;1451:5;1440:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1440:24:0;-1:-1:-1;1428:36:0;-1:-1:-1;1497:5:0;1485:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:35;;1526:9;1521:286;1541:16;;;1521:286;;;1580:12;1594:19;1625:4;1644:5;;1650:1;1644:8;;;;;;;;;;;;;;;;;;:::i;:::-;1617:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:74;;;;1676:7;:24;;;;1688:12;1687:13;1676:24;1702:21;1716:6;1702:13;:21::i;:::-;1668:56;;;;;-1:-1:-1;;;1668:56:0;;;;;;;;:::i;:::-;;;;;;;;;;1754:7;1739:9;1749:1;1739:12;;;;;;;;;;;;;:22;;;;;;;;;;;1789:6;1776:7;1784:1;1776:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;1559:3:0;;1521:286;;;;1260:554;;;;;;:::o;304:496::-;376:13;539:2;518:11;:18;:23;514:67;;;-1:-1:-1;543:38:0;;;;;;;;;;;;;;;;;;;514:67;685:4;672:11;668:22;653:37;;729:11;718:33;;;;;;;;;;;;:::i;:::-;711:40;;304:496;;;;:::o;1685:538:-1:-;;;;1849:2;1837:9;1828:7;1824:23;1820:32;1817:2;;;-1:-1;;1855:12;1817:2;1913:17;1900:31;1951:18;;1943:6;1940:30;1937:2;;;-1:-1;;1973:12;1937:2;2085:6;2074:9;2070:22;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;350:6;337:20;1951:18;369:6;366:30;363:2;;;-1:-1;;399:12;363:2;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;-1:-1;;501:12;454:2;443:4;431:17;;;;-1:-1;1993:109;-1:-1;;2175:22;;593:20;12783:13;;12776:21;14011:32;;14001:2;;-1:-1;;14047:12;14001:2;2147:60;;;;1811:412;;;;;:::o;2230:1145::-;;;;;;;;;2465:3;2453:9;2444:7;2440:23;2436:33;2433:2;;;-1:-1;;2472:12;2433:2;891:6;878:20;903:47;944:5;903:47;:::i;:::-;2524:77;-1:-1;2638:2;2677:22;;72:20;97:33;72:20;97:33;:::i;:::-;2646:63;-1:-1;2746:2;2785:22;;72:20;97:33;72:20;97:33;:::i;:::-;2754:63;-1:-1;2854:2;2893:22;;1482:20;;-1:-1;2962:3;3002:22;;1482:20;;-1:-1;3071:3;3109:22;;1617:20;13278:4;13267:16;;14530:33;;14520:2;;-1:-1;;14567:12;14520:2;2427:948;;;;-1:-1;2427:948;;;;;;3080:61;;-1:-1;;;3178:3;3218:22;;727:20;;3287:3;3327:22;727:20;;2427:948::o;3382:362::-;;3507:2;3495:9;3486:7;3482:23;3478:32;3475:2;;;-1:-1;;3513:12;3475:2;3564:17;3558:24;3602:18;;3594:6;3591:30;3588:2;;;-1:-1;;3624:12;3588:2;3711:6;3700:9;3696:22;;;1076:3;1069:4;1061:6;1057:17;1053:27;1043:2;;-1:-1;;1084:12;1043:2;1124:6;1118:13;3602:18;10451:6;10448:30;10445:2;;;-1:-1;;10481:12;10445:2;10114;10108:9;10554;10535:17;;-1:-1;;10531:33;10140:17;;3507:2;10140:17;10200:34;;;10236:22;;;10197:62;10194:2;;;-1:-1;;10262:12;10194:2;10114;10281:22;1217:21;;;1317:16;;;3507:2;1317:16;1314:25;-1:-1;1311:2;;;-1:-1;;1342:12;1311:2;1362:39;1394:6;3507:2;1293:5;1289:16;3507:2;1259:6;1255:17;1362:39;:::i;:::-;3644:84;3469:275;-1:-1;;;;;;3469:275::o;6455:323::-;;6587:5;11066:12;11881:6;11876:3;11869:19;6670:52;6715:6;11918:4;11913:3;11909:14;11918:4;6696:5;6692:16;6670:52;:::i;:::-;10554:9;13794:14;-1:-1;;13790:28;6734:39;;;;11918:4;6734:39;;6535:243;-1:-1;;6535:243::o;7373:291::-;;13377:6;13372:3;13367;13354:30;13415:16;;13408:27;;;13415:16;7517:147;-1:-1;7517:147::o;7671:884::-;-1:-1;;;;;13062:54;;;4190:37;;13062:54;;;;8127:2;8112:18;;4190:37;8210:2;8195:18;;6065:37;;;;8293:2;8278:18;;6065:37;;;;13278:4;13267:16;8372:3;8357:19;;7326:35;13073:42;8441:19;;6065:37;8540:3;8525:19;;6065:37;;;;7962:3;7947:19;;7933:622::o;8562:653::-;8829:2;8843:47;;;11066:12;;8814:18;;;11869:19;;;8562:653;;11918:4;;11909:14;;;;10756;;;8562:653;4657:251;4682:6;4679:1;4676:13;4657:251;;;4743:13;;12783;12776:21;5948:34;;3893:14;;;;11603;;;;4704:1;4697:9;4657:251;;;4661:14;;;9054:9;9048:4;9044:20;11918:4;9028:9;9024:18;9017:48;9079:126;5185:5;11066:12;5204:95;5292:6;5287:3;5204:95;:::i;:::-;5197:102;;;;;11918:4;5356:6;5352:17;5347:3;5343:27;11918:4;5450:5;10756:14;-1:-1;5489:357;5514:6;5511:1;5508:13;5489:357;;;5576:9;5570:4;5566:20;5561:3;5554:33;4041:64;4101:3;5621:6;5615:13;4041:64;:::i;:::-;5825:14;;;;5635:90;-1:-1;11603:14;;;;4704:1;5529:9;5489:357;;;-1:-1;9071:134;;8800:415;-1:-1;;;;;;;;;8800:415::o;9222:310::-;;9369:2;9390:17;9383:47;9444:78;9369:2;9358:9;9354:18;9508:6;9444:78;:::i;:::-;9436:86;9340:192;-1:-1;;;9340:192::o;9539:506::-;;;9674:11;9661:25;9725:48;;9749:8;9733:14;9729:29;9725:48;9705:18;9701:73;9691:2;;-1:-1;;9778:12;9691:2;9805:33;;9859:18;;;-1:-1;9897:18;9886:30;;9883:2;;;-1:-1;;9919:12;9883:2;9764:4;9947:13;;-1:-1;9733:14;9979:38;;;9969:49;;9966:2;;;10031:1;;10021:12;9966:2;9629:416;;;;;:::o;11754:175::-;11869:19;;;11918:4;11909:14;;11862:67::o;13450:268::-;13515:1;13522:101;13536:6;13533:1;13530:13;13522:101;;;13603:11;;;13597:18;13584:11;;;13577:39;13558:2;13551:10;13522:101;;;13638:6;13635:1;13632:13;13629:2;;;13515:1;13694:6;13689:3;13685:16;13678:27;13629:2;;13499:219;;;:::o;13831:117::-;-1:-1;;;;;13062:54;;13890:35;;13880:2;;13939:1;;13929:12;13880:2;13874:74;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "338200",
                "executionCost": "374",
                "totalCost": "338574"
              },
              "external": {
                "batch(bytes[],bool)": "infinite",
                "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {
              "batch(bytes[],bool)": "d2423b51",
              "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "7c516e94"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"successes\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"permitToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":\"BoringBatchable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol": {
        "BoringOwnable": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a361031b8061005f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063078dfbe7146100515780634e71e0c8146100895780638da5cb5b14610091578063e30c3978146100b5575b600080fd5b6100876004803603606081101561006757600080fd5b506001600160a01b038135169060208101351515906040013515156100bd565b005b610087610205565b6100996102c7565b604080516001600160a01b039092168252519081900360200190f35b6100996102d6565b6000546001600160a01b0316331461011c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b81156101e4576001600160a01b0383161515806101365750805b61017f576040805162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015290519081900360640190fd5b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610200565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001546001600160a01b0316338114610265576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b031681565b6001546001600160a01b03168156fea2646970667358221220649ef75cf6669c8effdec9b8095f1b2c78eaebb2ac862865cfa47f18c39b4c6564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH2 0x31B DUP1 PUSH2 0x5F 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x40 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xBD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x87 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x99 PUSH2 0x2C7 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 0x99 PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x136 JUMPI POP DUP1 JUMPDEST PUSH2 0x17F 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 0x4F776E61626C653A207A65726F2061646472657373 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 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x200 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x265 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0x9EF75CF666 SWAP13 DUP15 SELFDESTRUCT 0xDE 0xC9 0xB8 MULMOD 0x5F SHL 0x2C PUSH25 0xEAEBB2AC862865CFA47F18C39B4C6564736F6C634300060C00 CALLER ",
              "sourceMap": "448:1363:1:-:0;;;606:119;;;;;;;;;-1:-1:-1;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;448:1363;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c8063078dfbe7146100515780634e71e0c8146100895780638da5cb5b14610091578063e30c3978146100b5575b600080fd5b6100876004803603606081101561006757600080fd5b506001600160a01b038135169060208101351515906040013515156100bd565b005b610087610205565b6100996102c7565b604080516001600160a01b039092168252519081900360200190f35b6100996102d6565b6000546001600160a01b0316331461011c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b81156101e4576001600160a01b0383161515806101365750805b61017f576040805162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015290519081900360640190fd5b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610200565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001546001600160a01b0316338114610265576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b031681565b6001546001600160a01b03168156fea2646970667358221220649ef75cf6669c8effdec9b8095f1b2c78eaebb2ac862865cfa47f18c39b4c6564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x40 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xBD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x87 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x99 PUSH2 0x2C7 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 0x99 PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x136 JUMPI POP DUP1 JUMPDEST PUSH2 0x17F 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 0x4F776E61626C653A207A65726F2061646472657373 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 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x200 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x265 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0x9EF75CF666 SWAP13 DUP15 SELFDESTRUCT 0xDE 0xC9 0xB8 MULMOD 0x5F SHL 0x2C PUSH25 0xEAEBB2AC862865CFA47F18C39B4C6564736F6C634300060C00 CALLER ",
              "sourceMap": "448:1363:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;774:472:1;;;;;;;;;;;;;;;;;:::i;:::-;;1295:348;;;:::i;350:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;350:20:1;;;;;;;;;;;;;;397:27;;;:::i;774:472::-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;;-1:-1:-1;;;1724:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;::::0;;-1:-1:-1;;;925:68:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;925:68:1;;;;;;;;;;;;;::::1;;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;1295:348::-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;;-1:-1:-1;;;1415:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;350:20::-;;;-1:-1:-1;;;;;350:20:1;;:::o;397:27::-;;;-1:-1:-1;;;;;397:27:1;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "159000",
                "executionCost": "22570",
                "totalCost": "181570"
              },
              "external": {
                "claimOwnership()": "45022",
                "owner()": "1059",
                "pendingOwner()": "1081",
                "transferOwnership(address,bool,bool)": "45199"
              }
            },
            "methodIdentifiers": {
              "claimOwnership()": "4e71e0c8",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "transferOwnership(address,bool,bool)": "078dfbe7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":\"BoringOwnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol:BoringOwnable",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol:BoringOwnable",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringOwnableData": {
          "abi": [
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b5060b38061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063e30c3978146059575b600080fd5b603d605f565b604080516001600160a01b039092168252519081900360200190f35b603d606e565b6000546001600160a01b031681565b6001546001600160a01b03168156fea2646970667358221220edd478eb6730866065371f0718d50f36725a4fb5a00ce250db0d85c806cf19a564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xB3 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH1 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x5F 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 PUSH1 0x3D PUSH1 0x6E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED 0xD4 PUSH25 0xEB6730866065371F0718D50F36725A4FB5A00CE250DB0D85C8 MOD 0xCF NOT 0xA5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "296:132:1:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063e30c3978146059575b600080fd5b603d605f565b604080516001600160a01b039092168252519081900360200190f35b603d606e565b6000546001600160a01b031681565b6001546001600160a01b03168156fea2646970667358221220edd478eb6730866065371f0718d50f36725a4fb5a00ce250db0d85c806cf19a564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH1 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x5F 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 PUSH1 0x3D PUSH1 0x6E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED 0xD4 PUSH25 0xEB6730866065371F0718D50F36725A4FB5A00CE250DB0D85C8 MOD 0xCF NOT 0xA5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "296:132:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;350:20;;;:::i;:::-;;;;-1:-1:-1;;;;;350:20:1;;;;;;;;;;;;;;397:27;;;:::i;350:20::-;;;-1:-1:-1;;;;;350:20:1;;:::o;397:27::-;;;-1:-1:-1;;;;;397:27:1;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "35800",
                "executionCost": "87",
                "totalCost": "35887"
              },
              "external": {
                "owner()": "1015",
                "pendingOwner()": "1037"
              }
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":\"BoringOwnableData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol:BoringOwnableData",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol:BoringOwnableData",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@boringcrypto/boring-solidity/contracts/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": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "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": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "totalSupply()": "18160ddd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"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\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "BoringERC20": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2fe6f51bba98a39f828757f181ad2e5b35badf658bc93bc2e7f7a833dda063764736f6c634300060c0033",
              "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 0xC2 INVALID PUSH16 0x51BBA98A39F828757F181AD2E5B35BAD 0xF6 PC 0xBC SWAP4 0xBC 0x2E PUSH32 0x7A833DDA063764736F6C634300060C0033000000000000000000000000000000 ",
              "sourceMap": "105:1493:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2fe6f51bba98a39f828757f181ad2e5b35badf658bc93bc2e7f7a833dda063764736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 INVALID PUSH16 0x51BBA98A39F828757F181AD2E5B35BAD 0xF6 PC 0xBC SWAP4 0xBC 0x2E PUSH32 0x7A833DDA063764736F6C634300060C0033000000000000000000000000000000 ",
              "sourceMap": "105:1493:3:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "safeDecimals(contract IERC20)": "infinite",
                "safeName(contract IERC20)": "infinite",
                "safeSymbol(contract IERC20)": "infinite",
                "safeTransfer(contract IERC20,address,uint256)": "infinite",
                "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":\"BoringERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "BoringMath": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220daa4d221c8d9b38f8e6cdb09f6b242a4bb8d74d879764a543d82481ba203095764736f6c634300060c0033",
              "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 0xDA LOG4 0xD2 0x21 0xC8 0xD9 0xB3 DUP16 DUP15 PUSH13 0xDB09F6B242A4BB8D74D879764A SLOAD RETURNDATASIZE DUP3 0x48 SHL LOG2 SUB MULMOD JUMPI PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "185:916:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220daa4d221c8d9b38f8e6cdb09f6b242a4bb8d74d879764a543d82481ba203095764736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA LOG4 0xD2 0x21 0xC8 0xD9 0xB3 DUP16 DUP15 PUSH13 0xDB09F6B242A4BB8D74D879764A SLOAD RETURNDATASIZE DUP3 0x48 SHL LOG2 SUB MULMOD JUMPI PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "185:916:4:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(uint256,uint256)": "infinite",
                "mul(uint256,uint256)": "infinite",
                "sub(uint256,uint256)": "infinite",
                "to128(uint256)": "infinite",
                "to32(uint256)": "infinite",
                "to64(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringMath128": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220806a970b71f42c331e87e3b36bc30f8f57b556b035585837ed82df75eafbc4d664736f6c634300060c0033",
              "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 DUP1 PUSH11 0x970B71F42C331E87E3B36B 0xC3 0xF DUP16 JUMPI 0xB5 JUMP 0xB0 CALLDATALOAD PC PC CALLDATACOPY 0xED DUP3 0xDF PUSH22 0xEAFBC4D664736F6C634300060C003300000000000000 ",
              "sourceMap": "1105:285:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220806a970b71f42c331e87e3b36bc30f8f57b556b035585837ed82df75eafbc4d664736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 PUSH11 0x970B71F42C331E87E3B36B 0xC3 0xF DUP16 JUMPI 0xB5 JUMP 0xB0 CALLDATALOAD PC PC CALLDATACOPY 0xED DUP3 0xDF PUSH22 0xEAFBC4D664736F6C634300060C003300000000000000 ",
              "sourceMap": "1105:285:4:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(uint128,uint128)": "infinite",
                "sub(uint128,uint128)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath128\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringMath32": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220368b2bfedd621e3f68b54c4048ec4a05a324edeed66541ffc89aeff68c5ff1ff64736f6c634300060c0033",
              "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 CALLDATASIZE DUP12 0x2B INVALID 0xDD PUSH3 0x1E3F68 0xB5 0x4C BLOCKHASH 0x48 0xEC 0x4A SDIV LOG3 0x24 0xED 0xEE 0xD6 PUSH6 0x41FFC89AEFF6 DUP13 0x5F CALL SELFDESTRUCT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1676:278:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220368b2bfedd621e3f68b54c4048ec4a05a324edeed66541ffc89aeff68c5ff1ff64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATASIZE DUP12 0x2B INVALID 0xDD PUSH3 0x1E3F68 0xB5 0x4C BLOCKHASH 0x48 0xEC 0x4A SDIV LOG3 0x24 0xED 0xEE 0xD6 PUSH6 0x41FFC89AEFF6 DUP13 0x5F CALL SELFDESTRUCT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1676:278:4:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(uint32,uint32)": "infinite",
                "sub(uint32,uint32)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath32\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringMath64": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203aaf0c006788b81535dcf229f7cff071e9c6553b66d34f359e1d0b872d9937ff64736f6c634300060c0033",
              "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 GASPRICE 0xAF 0xC STOP PUSH8 0x88B81535DCF229F7 0xCF CREATE PUSH18 0xE9C6553B66D34F359E1D0B872D9937FF6473 PUSH16 0x6C634300060C00330000000000000000 ",
              "sourceMap": "1394:278:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203aaf0c006788b81535dcf229f7cff071e9c6553b66d34f359e1d0b872d9937ff64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xAF 0xC STOP PUSH8 0x88B81535DCF229F7 0xCF CREATE PUSH18 0xE9C6553B66D34F359E1D0B872D9937FF6473 PUSH16 0x6C634300060C00330000000000000000 ",
              "sourceMap": "1394:278:4:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(uint64,uint64)": "infinite",
                "sub(uint64,uint64)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath64\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/MasterChefV2.sol": {
        "IMigratorChef": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "migrate(address)": "ce5494bb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MasterChefV2.sol\":\"IMigratorChef\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/MasterChefV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IMasterChef.sol\\\";\\n\\ninterface IMigratorChef {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\\n/// It is the only address with minting rights for PICHI.\\n/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the MasterChef V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract MasterChefV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @dev Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of PICHI entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @dev Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of PICHI to distribute per block.\\n    struct PoolInfo {\\n        uint128 accPichiPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @dev Address of MCV1 contract.\\n    IMasterChef public immutable MASTER_CHEF;\\n    /// @dev Address of PICHI contract.\\n    IERC20 public immutable PICHI;\\n    /// @dev The index of MCV2 master pool in MCV1.\\n    uint256 public immutable MASTER_PID;\\n    // @dev The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorChef public migrator;\\n\\n    /// @dev Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @dev Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @dev Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @dev Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 private constant MASTERCHEF_PICHI_PER_BLOCK = 1e20;\\n    uint256 private constant ACC_PICHI_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accPichiPerShare);\\n    event LogInit();\\n\\n    /// @param _MASTER_CHEF The PolyCityDex MCV1 contract address.\\n    /// @param _pichi The PICHI token contract address.\\n    /// @param _MASTER_PID The pool ID of the dummy token on the base MCV1 contract.\\n    constructor(IMasterChef _MASTER_CHEF, IERC20 _pichi, uint256 _MASTER_PID) public {\\n        MASTER_CHEF = _MASTER_CHEF;\\n        PICHI = _pichi;\\n        MASTER_PID = _MASTER_PID;\\n    }\\n\\n    /// @dev Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting rights for PICHI.\\n    /// Any balance of transaction sender in `dummyToken` is transferred.\\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\\n    function init(IERC20 dummyToken) external {\\n        uint256 balance = dummyToken.balanceOf(msg.sender);\\n        require(balance != 0, \\\"MasterChefV2: Balance must exceed 0\\\");\\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\\n        dummyToken.approve(address(MASTER_CHEF), balance);\\n        MASTER_CHEF.deposit(MASTER_PID, balance);\\n        emit LogInit();\\n    }\\n\\n    /// @dev Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accPichiPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @dev Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @dev Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"MasterChefV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"MasterChefV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @dev View function to see pending PICHI on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending PICHI reward for a given user.\\n    function pendingPichi(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accPichiPerShare = pool.accPichiPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accPichiPerShare) / ACC_PICHI_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @dev Calculates and returns the `amount` of PICHI per block.\\n    function pichiPerBlock() public view returns (uint256 amount) {\\n        amount = uint256(MASTERCHEF_PICHI_PER_BLOCK)\\n            .mul(MASTER_CHEF.poolInfo(MASTER_PID).allocPoint) / MASTER_CHEF.totalAllocPoint();\\n    }\\n\\n    /// @dev Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accPichiPerShare);\\n        }\\n    }\\n\\n    /// @dev Deposit LP tokens to MCV2 for PICHI allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n        \\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of PICHI rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi;\\n\\n        // Interactions\\n        if (_pendingPichi != 0) {\\n            PICHI.safeTransfer(to, _pendingPichi);\\n        }\\n        \\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward( pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n    \\n    /// @dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and PICHI rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n        \\n        // Interactions\\n        PICHI.safeTransfer(to, _pendingPichi);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n\\n    /// @dev Harvests PICHI from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to this MCV2 contract.\\n    function harvestFromMasterChef() public {\\n        MASTER_CHEF.deposit(MASTER_PID, 0);\\n    }\\n\\n    /// @dev Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xce80632a87f022eab3609a722ecb72d4f4da124f401d0a68607c28b74a763169\",\"license\":\"MIT\"},\"contracts/interfaces/IMasterChef.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IMasterChef {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount; // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken; // Address of LP token contract.\\n        uint256 allocPoint; // How many allocation points assigned to this pool. PICHI to distribute per block.\\n        uint256 lastRewardBlock; // Last block number that PICHI distribution occurs.\\n        uint256 accPichiPerShare; // Accumulated PICHI per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);\\n\\n    function totalAllocPoint() external view returns (uint256);\\n\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0x2ade0f4bcab4f5537b20ae75ba2099f507b6c620bb81427cf4e687fd057216e1\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 private constant _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\\n\",\"keccak256\":\"0x42b350cf39c1685e9a37835d6e6fb66e27362ccdf38a165f5030c2eb8bccc938\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "MasterChefV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IMasterChef",
                  "name": "_MASTER_CHEF",
                  "type": "address"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_pichi",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_MASTER_PID",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "EmergencyWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Harvest",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "LogInit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IERC20",
                  "name": "lpToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                }
              ],
              "name": "LogPoolAddition",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "LogSetPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardBlock",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accPichiPerShare",
                  "type": "uint256"
                }
              ],
              "name": "LogUpdatePool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "MASTER_CHEF",
              "outputs": [
                {
                  "internalType": "contract IMasterChef",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MASTER_PID",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PICHI",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_lpToken",
                  "type": "address"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                }
              ],
              "name": "add",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "calls",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "revertOnFail",
                  "type": "bool"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "successes",
                  "type": "bool[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "emergencyWithdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "harvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "harvestFromMasterChef",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "dummyToken",
                  "type": "address"
                }
              ],
              "name": "init",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "lpToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "migrator",
              "outputs": [
                {
                  "internalType": "contract IMigratorChef",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingPichi",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "permitToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pichiPerBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accPichiPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardBlock",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "rewarder",
              "outputs": [
                {
                  "internalType": "contract IRewarder",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "set",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IMigratorChef",
                  "name": "_migrator",
                  "type": "address"
                }
              ],
              "name": "setMigrator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAllocPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accPichiPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardBlock",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MasterChefV2.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "int256",
                  "name": "rewardDebt",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawAndHarvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "The (older) MasterChef contract gives out a constant number of PICHI tokens per block. It is the only address with minting rights for PICHI. The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token that is deposited into the MasterChef V1 (MCV1) contract. The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.",
            "kind": "dev",
            "methods": {
              "add(uint256,address,address)": {
                "details": "Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.",
                "params": {
                  "_lpToken": "Address of the LP ERC-20 token.",
                  "_rewarder": "Address of the rewarder delegate.",
                  "allocPoint": "AP of the new pool."
                }
              },
              "constructor": {
                "params": {
                  "_MASTER_CHEF": "The PolyCityDex MCV1 contract address.",
                  "_MASTER_PID": "The pool ID of the dummy token on the base MCV1 contract.",
                  "_pichi": "The PICHI token contract address."
                }
              },
              "deposit(uint256,uint256,address)": {
                "details": "Deposit LP tokens to MCV2 for PICHI allocation.",
                "params": {
                  "amount": "LP token amount to deposit.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "The receiver of `amount` deposit benefit."
                }
              },
              "emergencyWithdraw(uint256,address)": {
                "details": "Withdraw without caring about rewards. EMERGENCY ONLY.",
                "params": {
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens."
                }
              },
              "harvest(uint256,address)": {
                "details": "Harvest proceeds for transaction sender to `to`.",
                "params": {
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of PICHI rewards."
                }
              },
              "harvestFromMasterChef()": {
                "details": "Harvests PICHI from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to this MCV2 contract."
              },
              "init(address)": {
                "details": "Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting rights for PICHI. Any balance of transaction sender in `dummyToken` is transferred. The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.",
                "params": {
                  "dummyToken": "The address of the ERC-20 token to deposit into MCV1."
                }
              },
              "massUpdatePools(uint256[])": {
                "details": "Update reward variables for all pools. Be careful of gas spending!",
                "params": {
                  "pids": "Pool IDs of all to be updated. Make sure to update all active pools."
                }
              },
              "migrate(uint256)": {
                "details": "Migrate LP token to another LP contract through the `migrator` contract.",
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`."
                }
              },
              "pendingPichi(uint256,address)": {
                "details": "View function to see pending PICHI on frontend.",
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_user": "Address of user."
                },
                "returns": {
                  "pending": "PICHI reward for a given user."
                }
              },
              "pichiPerBlock()": {
                "details": "Calculates and returns the `amount` of PICHI per block."
              },
              "poolLength()": {
                "details": "Returns the number of MCV2 pools."
              },
              "set(uint256,uint256,address,bool)": {
                "details": "Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.",
                "params": {
                  "_allocPoint": "New AP of the pool.",
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_rewarder": "Address of the rewarder delegate.",
                  "overwrite": "True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                }
              },
              "setMigrator(address)": {
                "details": "Set the `migrator` contract. Can only be called by the owner.",
                "params": {
                  "_migrator": "The contract address to set."
                }
              },
              "updatePool(uint256)": {
                "details": "Update reward variables of the given pool.",
                "params": {
                  "pid": "The index of the pool. See `poolInfo`."
                },
                "returns": {
                  "pool": "Returns the pool that was updated."
                }
              },
              "withdraw(uint256,uint256,address)": {
                "details": "Withdraw LP tokens from MCV2.",
                "params": {
                  "amount": "LP token amount to withdraw.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens."
                }
              },
              "withdrawAndHarvest(uint256,uint256,address)": {
                "details": "Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.",
                "params": {
                  "amount": "LP token amount to withdraw.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens and PICHI rewards."
                }
              }
            },
            "stateVariables": {
              "MASTER_CHEF": {
                "details": "Address of MCV1 contract."
              },
              "MASTER_PID": {
                "details": "The index of MCV2 master pool in MCV1."
              },
              "PICHI": {
                "details": "Address of PICHI contract."
              },
              "lpToken": {
                "details": "Address of the LP token for each MCV2 pool."
              },
              "poolInfo": {
                "details": "Info of each MCV2 pool."
              },
              "rewarder": {
                "details": "Address of each `IRewarder` contract in MCV2."
              },
              "totalAllocPoint": {
                "details": "Total allocation points. Must be the sum of all allocation points in all pools."
              },
              "userInfo": {
                "details": "Info of each user that stakes LP tokens."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b50604051620031b7380380620031b7833981016040819052620000349162000097565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606093841b81166080529190921b1660a05260c052620000f7565b600080600060608486031215620000ac578283fd5b8351620000b981620000de565b6020850151909350620000cc81620000de565b80925050604084015190509250925092565b6001600160a01b0381168114620000f457600080fd5b50565b60805160601c60a05160601c60c05161305b6200015c600039806107645280610d07528061127a5280611592525080610a695280611e2d528061213352508061068d52806107375280610c465280610cda528061124d5280612157525061305b6000f3fe6080604052600436106101d85760003560e01c806361621aaa1161010257806393f1a40b11610095578063d2423b5111610064578063d2423b5114610534578063e30c397814610555578063e7d77cba1461056a578063edd8b1701461057f576101d8565b806393f1a40b146104a6578063ab7de098146104d4578063c346253d146104f4578063d1abb90714610514576101d8565b806386f227f5116100d157806386f227f51461043157806388bba42f146104515780638da5cb5b146104715780638dbdbe6d14610486576101d8565b806361621aaa146103ba57806378ed5d1f146103cf5780637c516e94146103fc5780637cd07e471461041c576101d8565b806319ab453c1161017a5780634e71e0c8116101495780634e71e0c8146103435780634f70b15a1461035857806351eb05a61461036d57806357a5b58c1461039a576101d8565b806319ab453c146102c357806323cf3118146102e35780632f940c7014610303578063454b060814610323576101d8565b80630ad58d2f116101b65780630ad58d2f1461023f5780631526fe271461025f57806317caf6f11461028e57806318fccc76146102a3576101d8565b8063078dfbe7146101dd578063081e3eda146101ff5780630a0161891461022a575b600080fd5b3480156101e957600080fd5b506101fd6101f83660046125dd565b610594565b005b34801561020b57600080fd5b50610214610683565b6040516102219190612ee9565b60405180910390f35b34801561023657600080fd5b50610214610689565b34801561024b57600080fd5b506101fd61025a3660046128fc565b6107fd565b34801561026b57600080fd5b5061027f61027a366004612867565b61098d565b60405161022193929190612ebf565b34801561029a57600080fd5b506102146109cf565b3480156102af57600080fd5b506101fd6102be366004612897565b6109d5565b3480156102cf57600080fd5b506101fd6102de3660046126cb565b610b6f565b3480156102ef57600080fd5b506101fd6102fe3660046126cb565b610d90565b34801561030f57600080fd5b506101fd61031e366004612897565b610ddc565b34801561032f57600080fd5b506101fd61033e366004612867565b610efd565b34801561034f57600080fd5b506101fd6111a9565b34801561036457600080fd5b506101fd611236565b34801561037957600080fd5b5061038d610388366004612867565b6112d9565b6040516102219190612e86565b3480156103a657600080fd5b506101fd6103b5366004612670565b611560565b3480156103c657600080fd5b50610214611590565b3480156103db57600080fd5b506103ef6103ea366004612867565b6115b4565b60405161022191906129ca565b34801561040857600080fd5b506101fd610417366004612703565b6115db565b34801561042857600080fd5b506103ef61164f565b34801561043d57600080fd5b5061021461044c366004612897565b61165e565b34801561045d57600080fd5b506101fd61046c366004612929565b61184e565b34801561047d57600080fd5b506103ef6119bb565b34801561049257600080fd5b506101fd6104a13660046128fc565b6119ca565b3480156104b257600080fd5b506104c66104c1366004612897565b611b55565b604051610221929190612f31565b3480156104e057600080fd5b506101fd6104ef3660046128c6565b611b79565b34801561050057600080fd5b506103ef61050f366004612867565b611d52565b34801561052057600080fd5b506101fd61052f3660046128fc565b611d5f565b610547610542366004612627565b611f92565b604051610221929190612a5c565b34801561056157600080fd5b506103ef612122565b34801561057657600080fd5b506103ef612131565b34801561058b57600080fd5b506103ef612155565b6000546001600160a01b031633146105c75760405162461bcd60e51b81526004016105be90612cfe565b60405180910390fd5b8115610662576001600160a01b0383161515806105e15750805b6105fd5760405162461bcd60e51b81526004016105be90612c18565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b03199182161790915560018054909116905561067e565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061287f565b604051631526fe2760e01b81526107f0906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631526fe279061078c907f000000000000000000000000000000000000000000000000000000000000000090600401612ee9565b60806040518083038186803b1580156107a457600080fd5b505afa1580156107b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dc9190612815565b6020015168056bc75e2d6310000090612179565b816107f757fe5b04905090565b610805612575565b61080e846112d9565b600085815260066020908152604080832033845290915290208151919250906108609064e8d4a510009061084c9087906001600160801b0316612179565b8161085357fe5b60018401549190046121b6565b600182015580546108719085612203565b815560058054600091908790811061088557fe5b6000918252602090912001546001600160a01b03169050801561090b57815460405163569db41b60e11b81526001600160a01b0383169163ad3b6836916108d8918a9133918a9160009190600401612ef2565b600060405180830381600087803b1580156108f257600080fd5b505af1158015610906573d6000803e3d6000fd5b505050505b61093984866004898154811061091d57fe5b6000918252602090912001546001600160a01b03169190612226565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328860405161097d9190612ee9565b60405180910390a4505050505050565b6003818154811061099a57fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b6109dd612575565b6109e6836112d9565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a5100091610a2291906001600160801b0316612179565b81610a2957fe5b0490506000610a4d610a488460010154846121b690919063ffffffff16565b612314565b6001840183905590508015610a9057610a906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683612226565b600060058781548110610a9f57fe5b6000918252602090912001546001600160a01b031690508015610b2457835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691610af1918b9133918c91899190600401612ef2565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051610b5e9190612ee9565b60405180910390a350505050505050565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610b9e9033906004016129ca565b60206040518083038186803b158015610bb657600080fd5b505afa158015610bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bee919061287f565b905080610c0d5760405162461bcd60e51b81526004016105be90612b5d565b610c226001600160a01b03831633308461233a565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b390610c70907f0000000000000000000000000000000000000000000000000000000000000000908590600401612a43565b602060405180830381600087803b158015610c8a57600080fd5b505af1158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906126af565b50604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb15890610d31907f0000000000000000000000000000000000000000000000000000000000000000908590600401612f31565b600060405180830381600087803b158015610d4b57600080fd5b505af1158015610d5f573d6000803e3d6000fd5b50506040517f98a9bd3b7a617581fc53b1e2992534e0e0cb5091c9d44aa1a7fc978f706caa83925060009150a15050565b6000546001600160a01b03163314610dba5760405162461bcd60e51b81526004016105be90612cfe565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610e1357fe5b6000918252602090912001546001600160a01b031690508015610e985760405163569db41b60e11b81526001600160a01b0382169063ad3b683690610e65908890339089906000908190600401612ef2565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b610eaa84836004888154811061091d57fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610eee9190612ee9565b60405180910390a45050505050565b6002546001600160a01b0316610f255760405162461bcd60e51b81526004016105be90612d9f565b600060048281548110610f3457fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610f6f9030906004016129ca565b60206040518083038186803b158015610f8757600080fd5b505afa158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbf919061287f565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610ff49216908590600401612a43565b602060405180830381600087803b15801561100e57600080fd5b505af1158015611022573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104691906126af565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb906110789086906004016129ca565b602060405180830381600087803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ca91906126e7565b6040516370a0823160e01b81529091506001600160a01b038216906370a08231906110f99030906004016129ca565b60206040518083038186803b15801561111157600080fd5b505afa158015611125573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611149919061287f565b82146111675760405162461bcd60e51b81526004016105be90612c47565b806004858154811061117557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b03163381146111d45760405162461bcd60e51b81526004016105be90612d33565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb158906112a5907f000000000000000000000000000000000000000000000000000000000000000090600090600401612f31565b600060405180830381600087803b1580156112bf57600080fd5b505af11580156112d3573d6000803e3d6000fd5b50505050565b6112e1612575565b600382815481106112ee57fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915043111561155b5760006004838154811061135057fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906113899030906004016129ca565b60206040518083038186803b1580156113a157600080fd5b505afa1580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d9919061287f565b9050801561147f57600061140383602001516001600160401b03164361220390919063ffffffff16565b9050600060075461143385604001516001600160401b031661142d611426610689565b8690612179565b90612179565b8161143a57fe5b049050611471611460846114538464e8d4a51000612179565b8161145a57fe5b0461242b565b85516001600160801b031690612454565b6001600160801b0316845250505b61148843612483565b6001600160401b0316602083015260038054839190859081106114a757fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926115519290918691612f3f565b60405180910390a2505b919050565b8060005b818110156112d35761158784848381811061157b57fe5b905060200201356112d9565b50600101611564565b7f000000000000000000000000000000000000000000000000000000000000000081565b600481815481106115c157fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90611613908a908a908a908a908a908a908a90600401612a02565b600060405180830381600087803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000611668612575565b6003848154811061167557fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b03891686529092529183208251600480549496509194921692889081106116f357fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a082319061172c9030906004016129ca565b60206040518083038186803b15801561174457600080fd5b505afa158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c919061287f565b905083602001516001600160401b03164311801561179957508015155b156118155760006117c085602001516001600160401b03164361220390919063ffffffff16565b905060006007546117e387604001516001600160401b031661142d611426610689565b816117ea57fe5b049050611810836118008364e8d4a51000612179565b8161180757fe5b869190046124ac565b935050505b6001830154835461184391610a489164e8d4a51000906118359087612179565b8161183c57fe5b04906121b6565b979650505050505050565b6000546001600160a01b031633146118785760405162461bcd60e51b81526004016105be90612cfe565b6118b7836118b16003878154811061188c57fe5b60009182526020909120015460075490600160c01b90046001600160401b0316612203565b906124ac565b6007556118c383612483565b600385815481106118d057fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561194457816005858154811061191557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611970576005848154811061195657fe5b6000918252602090912001546001600160a01b0316611972565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e186585846040516119ad929190612f21565b60405180910390a350505050565b6000546001600160a01b031681565b6119d2612575565b6119db846112d9565b60008581526006602090815260408083206001600160a01b03871684529091529020805491925090611a0d90856124ac565b81558151611a449064e8d4a5100090611a309087906001600160801b0316612179565b81611a3757fe5b60018401549190046124cf565b8160010181905550600060058681548110611a5b57fe5b6000918252602090912001546001600160a01b031690508015611ae157815460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611aae918a918991829160009190600401612ef2565b600060405180830381600087803b158015611ac857600080fd5b505af1158015611adc573d6000803e3d6000fd5b505050505b611b1133308760048a81548110611af457fe5b6000918252602090912001546001600160a01b031692919061233a565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478860405161097d9190612ee9565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b03163314611ba35760405162461bcd60e51b81526004016105be90612cfe565b6007544390611bb290856124ac565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038087166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909301805492861692909116919091179055604080516060810190915290815260039060208101611c5f84612483565b6001600160401b03168152602001611c7687612483565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b038085169290861691611d1591612203565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e587604051611d449190612ee9565b60405180910390a450505050565b600581815481106115c157fe5b611d67612575565b611d70846112d9565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a5100091611dac91906001600160801b0316612179565b81611db357fe5b0490506000611dd2610a488460010154846121b690919063ffffffff16565b9050611e0d64e8d4a51000611dfd86600001516001600160801b03168961217990919063ffffffff16565b81611e0457fe5b849190046121b6565b60018401558254611e1e9087612203565b8355611e546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683612226565b600060058881548110611e6357fe5b6000918252602090912001546001600160a01b031690508015611ee857835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611eb5918c9133918c91899190600401612ef2565b600060405180830381600087803b158015611ecf57600080fd5b505af1158015611ee3573d6000803e3d6000fd5b505050505b611efa868860048b8154811061091d57fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611f3e9190612ee9565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611f809190612ee9565b60405180910390a35050505050505050565b606080836001600160401b0381118015611fab57600080fd5b50604051908082528060200260200182016040528015611fd5578160200160208202803683370190505b509150836001600160401b0381118015611fee57600080fd5b5060405190808252806020026020018201604052801561202257816020015b606081526020019060019003908161200d5790505b50905060005b8481101561211957600060603088888581811061204157fe5b90506020028101906120539190612f69565b60405161206192919061299e565b600060405180830381855af49150503d806000811461209c576040519150601f19603f3d011682016040523d82523d6000602084013e6120a1565b606091505b509150915081806120b0575085155b6120b982612515565b906120d75760405162461bcd60e51b81526004016105be9190612af6565b50818584815181106120e557fe5b6020026020010190151590811515815250508084848151811061210457fe5b60209081029190910101525050600101612028565b50935093915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008115806121945750508082028282828161219157fe5b04145b6121b05760405162461bcd60e51b81526004016105be90612e4f565b92915050565b60008183038183128015906121cb5750838113155b806121e057506000831280156121e057508381135b6121fc5760405162461bcd60e51b81526004016105be90612dd6565b9392505050565b808203828111156121b05760405162461bcd60e51b81526004016105be90612b09565b60006060846001600160a01b031663a9059cbb858560405160240161224c929190612a43565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161228591906129ae565b6000604051808303816000865af19150503d80600081146122c2576040519150601f19603f3d011682016040523d82523d6000602084013e6122c7565b606091505b50915091508180156122f15750805115806122f15750808060200190518101906122f191906126af565b61230d5760405162461bcd60e51b81526004016105be90612ba0565b5050505050565b6000808212156123365760405162461bcd60e51b81526004016105be90612b38565b5090565b60006060856001600160a01b03166323b872dd868686604051602401612362939291906129de565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161239b91906129ae565b6000604051808303816000865af19150503d80600081146123d8576040519150601f19603f3d011682016040523d82523d6000602084013e6123dd565b606091505b509150915081801561240757508051158061240757508080602001905181019061240791906126af565b6124235760405162461bcd60e51b81526004016105be90612e1a565b505050505050565b60006001600160801b038211156123365760405162461bcd60e51b81526004016105be90612c90565b8181016001600160801b0380831690821610156121b05760405162461bcd60e51b81526004016105be90612cc7565b60006001600160401b038211156123365760405162461bcd60e51b81526004016105be90612d68565b818101818110156121b05760405162461bcd60e51b81526004016105be90612cc7565b60008282018183128015906124e45750838112155b806124f957506000831280156124f957508381125b6121fc5760405162461bcd60e51b81526004016105be90612bd7565b606060448251101561255b575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261155b565b600482019150818060200190518101906121b0919061278a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f8401126125a6578182fd5b5081356001600160401b038111156125bc578182fd5b60208301915083602080830285010111156125d657600080fd5b9250929050565b6000806000606084860312156125f1578283fd5b83356125fc81612fff565b9250602084013561260c81613017565b9150604084013561261c81613017565b809150509250925092565b60008060006040848603121561263b578283fd5b83356001600160401b03811115612650578384fd5b61265c86828701612595565b909450925050602084013561261c81613017565b60008060208385031215612682578182fd5b82356001600160401b03811115612697578283fd5b6126a385828601612595565b90969095509350505050565b6000602082840312156126c0578081fd5b81516121fc81613017565b6000602082840312156126dc578081fd5b81356121fc81612fff565b6000602082840312156126f8578081fd5b81516121fc81612fff565b600080600080600080600080610100898b03121561271f578384fd5b883561272a81612fff565b9750602089013561273a81612fff565b9650604089013561274a81612fff565b9550606089013594506080890135935060a089013560ff8116811461276d578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561279b578081fd5b81516001600160401b03808211156127b1578283fd5b818401915084601f8301126127c4578283fd5b8151818111156127d2578384fd5b6127e5601f8201601f1916602001612fad565b91508082528560208285010111156127fb578384fd5b61280c816020840160208601612fd3565b50949350505050565b600060808284031215612826578081fd5b6128306080612fad565b825161283b81612fff565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612878578081fd5b5035919050565b600060208284031215612890578081fd5b5051919050565b600080604083850312156128a9578182fd5b8235915060208301356128bb81612fff565b809150509250929050565b6000806000606084860312156128da578081fd5b8335925060208401356128ec81612fff565b9150604084013561261c81612fff565b600080600060608486031215612910578081fd5b8335925060208401359150604084013561261c81612fff565b6000806000806080858703121561293e578182fd5b8435935060208501359250604085013561295781612fff565b9150606085013561296781613017565b939692955090935050565b6000815180845261298a816020860160208601612fd3565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b600082516129c0818460208701612fd3565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b82811015612a97578151151584529284019290840190600101612a79565b50505083810382850152808551612aae8184612ee9565b91508192508381028201848801865b83811015612ae7578583038552612ad5838351612972565b94870194925090860190600101612abd565b50909998505050505050505050565b6000602082526121fc6020830184612972565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b60208082526023908201527f4d61737465724368656656323a2042616c616e6365206d75737420657863656560408201526206420360ec1b606082015260800190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d6040820152680eae6e840dac2e8c6d60bb1b606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612f7f578283fd5b8301803591506001600160401b03821115612f98578283fd5b6020019150368190038213156125d657600080fd5b6040518181016001600160401b0381118282101715612fcb57600080fd5b604052919050565b60005b83811015612fee578181015183820152602001612fd6565b838111156112d35750506000910152565b6001600160a01b038116811461301457600080fd5b50565b801515811461301457600080fdfea26469706673582212205a757c92cea215fe95383195a892d7ebcffa4ee2393b54590e1212febc79872764736f6c634300060c0033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x31B7 CODESIZE SUB DUP1 PUSH3 0x31B7 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x97 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH3 0xF7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xAC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xB9 DUP2 PUSH3 0xDE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0xCC DUP2 PUSH3 0xDE JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH2 0x305B PUSH3 0x15C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x764 MSTORE DUP1 PUSH2 0xD07 MSTORE DUP1 PUSH2 0x127A MSTORE DUP1 PUSH2 0x1592 MSTORE POP DUP1 PUSH2 0xA69 MSTORE DUP1 PUSH2 0x1E2D MSTORE DUP1 PUSH2 0x2133 MSTORE POP DUP1 PUSH2 0x68D MSTORE DUP1 PUSH2 0x737 MSTORE DUP1 PUSH2 0xC46 MSTORE DUP1 PUSH2 0xCDA MSTORE DUP1 PUSH2 0x124D MSTORE DUP1 PUSH2 0x2157 MSTORE POP PUSH2 0x305B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x61621AAA GT PUSH2 0x102 JUMPI DUP1 PUSH4 0x93F1A40B GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xD2423B51 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x555 JUMPI DUP1 PUSH4 0xE7D77CBA EQ PUSH2 0x56A JUMPI DUP1 PUSH4 0xEDD8B170 EQ PUSH2 0x57F JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0xAB7DE098 EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x514 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x86F227F5 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x86F227F5 EQ PUSH2 0x431 JUMPI DUP1 PUSH4 0x88BBA42F EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x471 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x486 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x61621AAA EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x41C JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x19AB453C GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x4E71E0C8 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x4F70B15A EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x39A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x19AB453C EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x323 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xAD58D2F GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x2A3 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xA016189 EQ PUSH2 0x22A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x25DD JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x683 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x689 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x25A CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27F PUSH2 0x27A CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x98D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2EBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x9CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2BE CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x9D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x26CB JUMP JUMPDEST PUSH2 0xB6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x26CB JUMP JUMPDEST PUSH2 0xD90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0xDDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0xEFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x11A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1236 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH2 0x388 CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x2E86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2670 JUMP JUMPDEST PUSH2 0x1560 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x1590 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x29CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x417 CALLDATASIZE PUSH1 0x4 PUSH2 0x2703 JUMP JUMPDEST PUSH2 0x15DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x164F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x165E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x46C CALLDATASIZE PUSH1 0x4 PUSH2 0x2929 JUMP JUMPDEST PUSH2 0x184E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x19BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x4A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x19CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C6 PUSH2 0x4C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x1B55 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x2F31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x28C6 JUMP JUMPDEST PUSH2 0x1B79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x50F CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x1D52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x52F CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x1D5F JUMP JUMPDEST PUSH2 0x547 PUSH2 0x542 CALLDATASIZE PUSH1 0x4 PUSH2 0x2627 JUMP JUMPDEST PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x2A5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x561 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x2122 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x2131 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x2155 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x662 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x5E1 JUMPI POP DUP1 JUMPDEST PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C18 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x67E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17CAF6F1 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 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x71C SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1526FE27 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x7F0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1526FE27 SWAP1 PUSH2 0x78C SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7DC SWAP2 SWAP1 PUSH2 0x2815 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH9 0x56BC75E2D63100000 SWAP1 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x7F7 JUMPI INVALID JUMPDEST DIV SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x805 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x80E DUP5 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x860 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x84C SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x853 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x21B6 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE DUP1 SLOAD PUSH2 0x871 SWAP1 DUP6 PUSH2 0x2203 JUMP JUMPDEST DUP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x885 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x90B JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x8D8 SWAP2 DUP11 SWAP2 CALLER SWAP2 DUP11 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x906 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x939 DUP5 DUP7 PUSH1 0x4 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x91D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x2226 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x97D SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x99A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x9DD PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x9E6 DUP4 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0xA22 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0xA29 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0xA4D PUSH2 0xA48 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x21B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2314 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0xA90 JUMPI PUSH2 0xA90 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x2226 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xA9F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xB24 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0xAF1 SWAP2 DUP12 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB5E SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xB9E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBEE SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xC0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH2 0xC22 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x233A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xC70 SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCC2 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x1C57762B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0xD31 SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x98A9BD3B7A617581FC53B1E2992534E0E0CB5091C9D44AA1A7FC978F706CAA83 SWAP3 POP PUSH1 0x0 SWAP2 POP LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xDBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP1 DUP2 LT PUSH2 0xE13 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xE98 JUMPI PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAD3B6836 SWAP1 PUSH2 0xE65 SWAP1 DUP9 SWAP1 CALLER SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xEAA DUP5 DUP4 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x91D JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP6 PUSH1 0x40 MLOAD PUSH2 0xEEE SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xF34 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 POP DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xF6F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFBF SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xFF4 SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x100E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1022 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1046 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCE5494BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xCE5494BB SWAP1 PUSH2 0x1078 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1092 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10CA SWAP2 SWAP1 PUSH2 0x26E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x10F9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1125 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1149 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST DUP3 EQ PUSH2 0x1167 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C47 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1175 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x11D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D33 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1C57762B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0x12A5 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x12E1 PUSH2 0x2575 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x12EE JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP1 DUP3 ADD MSTORE SWAP2 POP NUMBER GT ISZERO PUSH2 0x155B JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1350 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1389 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13D9 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x147F JUMPI PUSH1 0x0 PUSH2 0x1403 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0x2203 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x1433 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x142D PUSH2 0x1426 PUSH2 0x689 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x2179 JUMP JUMPDEST SWAP1 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x143A JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1471 PUSH2 0x1460 DUP5 PUSH2 0x1453 DUP5 PUSH5 0xE8D4A51000 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x145A JUMPI INVALID JUMPDEST DIV PUSH2 0x242B JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x1488 NUMBER PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x14A7 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD SWAP2 ADD DUP1 SLOAD DUP5 DUP5 ADD MLOAD PUSH1 0x40 SWAP6 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0x1551 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x2F3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x12D3 JUMPI PUSH2 0x1587 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x157B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x12D9 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1564 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x15C1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x1613 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x162D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1641 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1668 PUSH2 0x2575 JUMP JUMPDEST PUSH1 0x3 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1675 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP6 ADD MSTORE DUP9 DUP6 MSTORE PUSH1 0x6 DUP4 MSTORE DUP4 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP2 DUP4 KECCAK256 DUP3 MLOAD PUSH1 0x4 DUP1 SLOAD SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP3 AND SWAP3 DUP9 SWAP1 DUP2 LT PUSH2 0x16F3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x172C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1744 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1758 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x177C SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT DUP1 ISZERO PUSH2 0x1799 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 PUSH2 0x17C0 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0x2203 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x17E3 DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x142D PUSH2 0x1426 PUSH2 0x689 JUMP JUMPDEST DUP2 PUSH2 0x17EA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1810 DUP4 PUSH2 0x1800 DUP4 PUSH5 0xE8D4A51000 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1807 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0x24AC JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x1843 SWAP2 PUSH2 0xA48 SWAP2 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x1835 SWAP1 DUP8 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x183C JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x21B6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1878 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CFE JUMP JUMPDEST PUSH2 0x18B7 DUP4 PUSH2 0x18B1 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x188C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x7 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x2203 JUMP JUMPDEST SWAP1 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x18C3 DUP4 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x18D0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1944 JUMPI DUP2 PUSH1 0x5 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1915 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x1970 JUMPI PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1956 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1972 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x95895A6AB1DF54420D241B55243258A33E61B2194DB66C1179EC521AAE8E1865 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x19AD SWAP3 SWAP2 SWAP1 PUSH2 0x2F21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x19D2 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x19DB DUP5 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x1A0D SWAP1 DUP6 PUSH2 0x24AC JUMP JUMPDEST DUP2 SSTORE DUP2 MLOAD PUSH2 0x1A44 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x1A30 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1A37 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x24CF JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1A5B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x1AE1 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x1AAE SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP3 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1ADC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1B11 CALLER ADDRESS DUP8 PUSH1 0x4 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x1AF4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x233A JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x97D SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1BA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x7 SLOAD NUMBER SWAP1 PUSH2 0x1BB2 SWAP1 DUP6 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD SWAP1 SWAP3 SSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP5 ADD DUP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 PUSH1 0x20 DUP2 ADD PUSH2 0x1C5F DUP5 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C76 DUP8 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 DUP5 MLOAD SWAP3 ADD DUP1 SLOAD SWAP6 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD DUP5 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP6 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP3 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 SWAP1 DUP7 AND SWAP2 PUSH2 0x1D15 SWAP2 PUSH2 0x2203 JUMP JUMPDEST PUSH32 0x81EE0F8C5C46E2CB41984886F77A84181724ABB86C32A5F6DE539B07509D45E5 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1D44 SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x15C1 JUMPI INVALID JUMPDEST PUSH2 0x1D67 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x1D70 DUP5 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x1DAC SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1DB3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x1DD2 PUSH2 0xA48 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x21B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1E0D PUSH5 0xE8D4A51000 PUSH2 0x1DFD DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x2179 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x1E04 JUMPI INVALID JUMPDEST DUP5 SWAP2 SWAP1 DIV PUSH2 0x21B6 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE DUP3 SLOAD PUSH2 0x1E1E SWAP1 DUP8 PUSH2 0x2203 JUMP JUMPDEST DUP4 SSTORE PUSH2 0x1E54 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x2226 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x1E63 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x1EE8 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x1EB5 SWAP2 DUP13 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ECF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1EFA DUP7 DUP9 PUSH1 0x4 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x91D JUMPI INVALID JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1F3E SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1F80 SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1FAB 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 0x1FD5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1FEE 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 0x2022 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x200D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2119 JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x2041 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2053 SWAP2 SWAP1 PUSH2 0x2F69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2061 SWAP3 SWAP2 SWAP1 PUSH2 0x299E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x209C 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 0x20A1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x20B0 JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x20B9 DUP3 PUSH2 0x2515 JUMP JUMPDEST SWAP1 PUSH2 0x20D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP2 SWAP1 PUSH2 0x2AF6 JUMP JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x20E5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2104 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2028 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2194 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2191 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x21CB JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x21E0 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x21E0 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0x21FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2DD6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x224C SWAP3 SWAP2 SWAP1 PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x2285 SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x22C2 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 0x22C7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x22F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x22F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22F1 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST PUSH2 0x230D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2BA0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B38 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2362 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x239B SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23D8 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 0x23DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2407 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2407 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2407 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST PUSH2 0x2423 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2E1A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C90 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D68 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CC7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x24E4 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x24F9 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x24F9 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0x21FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2BD7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x255B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x155B JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21B0 SWAP2 SWAP1 PUSH2 0x278A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x25A6 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25BC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x25D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x25F1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x25FC DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x260C DUP2 PUSH2 0x3017 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x3017 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x263B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2650 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x265C DUP7 DUP3 DUP8 ADD PUSH2 0x2595 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x3017 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2682 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2697 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x26A3 DUP6 DUP3 DUP7 ADD PUSH2 0x2595 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21FC DUP2 PUSH2 0x3017 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26DC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21FC DUP2 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26F8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21FC DUP2 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x271F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x272A DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x273A DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x274A DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x276D JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x279B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x27B1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27C4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x27D2 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x27E5 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2FAD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x27FB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x280C DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2FD3 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2826 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2830 PUSH1 0x80 PUSH2 0x2FAD JUMP JUMPDEST DUP3 MLOAD PUSH2 0x283B DUP2 PUSH2 0x2FFF JUMP JUMPDEST DUP1 DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2878 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2890 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28A9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x28BB DUP2 PUSH2 0x2FFF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x28DA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x28EC DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2910 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x293E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2957 DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2967 DUP2 PUSH2 0x3017 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x298A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x29C0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2FD3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2A97 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2A79 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x2AAE DUP2 DUP5 PUSH2 0x2EE9 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AE7 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x2AD5 DUP4 DUP4 MLOAD PUSH2 0x2972 JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2ABD JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x21FC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2972 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH11 0x496E7465676572203C203 PUSH1 0xAC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A2042616C616E6365206D757374206578636565 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x64203 PUSH1 0xEC SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A206D696772617465642062616C616E6365206D PUSH1 0x40 DUP3 ADD MSTORE PUSH9 0xEAE6E840DAC2E8C6D PUSH1 0xBB SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1D SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A206E6F206D69677261746F7220736574000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F7F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2F98 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x25D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2FCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FEE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2FD6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x12D3 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3014 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS PUSH22 0x7C92CEA215FE95383195A892D7EBCFFA4EE2393B5459 0xE SLT SLT INVALID 0xBC PUSH26 0x872764736F6C634300060C003300000000000000000000000000 ",
              "sourceMap": "1095:13895:5:-:0;;;3808:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;-1:-1:-1;;;;;;3899:26:5;;;;;;;;3935:14;;;;;;;3959:24;;1095:13895;;496:603:-1;;;;679:2;667:9;658:7;654:23;650:32;647:2;;;-1:-1;;685:12;647:2;278:6;272:13;290:53;337:5;290:53;:::i;:::-;868:2;932:22;;97:13;737:94;;-1:-1;115:47;97:13;115:47;:::i;:::-;876:88;;;;1001:2;1055:9;1051:22;433:13;1009:74;;641:458;;;;;:::o;1641:145::-;-1:-1;;;;;1496:54;;1714:49;;1704:2;;1777:1;;1767:12;1704:2;1698:88;:::o;:::-;1095:13895:5;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "890": [
                  {
                    "length": 32,
                    "start": 1677
                  },
                  {
                    "length": 32,
                    "start": 1847
                  },
                  {
                    "length": 32,
                    "start": 3142
                  },
                  {
                    "length": 32,
                    "start": 3290
                  },
                  {
                    "length": 32,
                    "start": 4685
                  },
                  {
                    "length": 32,
                    "start": 8535
                  }
                ],
                "893": [
                  {
                    "length": 32,
                    "start": 2665
                  },
                  {
                    "length": 32,
                    "start": 7725
                  },
                  {
                    "length": 32,
                    "start": 8499
                  }
                ],
                "896": [
                  {
                    "length": 32,
                    "start": 1892
                  },
                  {
                    "length": 32,
                    "start": 3335
                  },
                  {
                    "length": 32,
                    "start": 4730
                  },
                  {
                    "length": 32,
                    "start": 5522
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106101d85760003560e01c806361621aaa1161010257806393f1a40b11610095578063d2423b5111610064578063d2423b5114610534578063e30c397814610555578063e7d77cba1461056a578063edd8b1701461057f576101d8565b806393f1a40b146104a6578063ab7de098146104d4578063c346253d146104f4578063d1abb90714610514576101d8565b806386f227f5116100d157806386f227f51461043157806388bba42f146104515780638da5cb5b146104715780638dbdbe6d14610486576101d8565b806361621aaa146103ba57806378ed5d1f146103cf5780637c516e94146103fc5780637cd07e471461041c576101d8565b806319ab453c1161017a5780634e71e0c8116101495780634e71e0c8146103435780634f70b15a1461035857806351eb05a61461036d57806357a5b58c1461039a576101d8565b806319ab453c146102c357806323cf3118146102e35780632f940c7014610303578063454b060814610323576101d8565b80630ad58d2f116101b65780630ad58d2f1461023f5780631526fe271461025f57806317caf6f11461028e57806318fccc76146102a3576101d8565b8063078dfbe7146101dd578063081e3eda146101ff5780630a0161891461022a575b600080fd5b3480156101e957600080fd5b506101fd6101f83660046125dd565b610594565b005b34801561020b57600080fd5b50610214610683565b6040516102219190612ee9565b60405180910390f35b34801561023657600080fd5b50610214610689565b34801561024b57600080fd5b506101fd61025a3660046128fc565b6107fd565b34801561026b57600080fd5b5061027f61027a366004612867565b61098d565b60405161022193929190612ebf565b34801561029a57600080fd5b506102146109cf565b3480156102af57600080fd5b506101fd6102be366004612897565b6109d5565b3480156102cf57600080fd5b506101fd6102de3660046126cb565b610b6f565b3480156102ef57600080fd5b506101fd6102fe3660046126cb565b610d90565b34801561030f57600080fd5b506101fd61031e366004612897565b610ddc565b34801561032f57600080fd5b506101fd61033e366004612867565b610efd565b34801561034f57600080fd5b506101fd6111a9565b34801561036457600080fd5b506101fd611236565b34801561037957600080fd5b5061038d610388366004612867565b6112d9565b6040516102219190612e86565b3480156103a657600080fd5b506101fd6103b5366004612670565b611560565b3480156103c657600080fd5b50610214611590565b3480156103db57600080fd5b506103ef6103ea366004612867565b6115b4565b60405161022191906129ca565b34801561040857600080fd5b506101fd610417366004612703565b6115db565b34801561042857600080fd5b506103ef61164f565b34801561043d57600080fd5b5061021461044c366004612897565b61165e565b34801561045d57600080fd5b506101fd61046c366004612929565b61184e565b34801561047d57600080fd5b506103ef6119bb565b34801561049257600080fd5b506101fd6104a13660046128fc565b6119ca565b3480156104b257600080fd5b506104c66104c1366004612897565b611b55565b604051610221929190612f31565b3480156104e057600080fd5b506101fd6104ef3660046128c6565b611b79565b34801561050057600080fd5b506103ef61050f366004612867565b611d52565b34801561052057600080fd5b506101fd61052f3660046128fc565b611d5f565b610547610542366004612627565b611f92565b604051610221929190612a5c565b34801561056157600080fd5b506103ef612122565b34801561057657600080fd5b506103ef612131565b34801561058b57600080fd5b506103ef612155565b6000546001600160a01b031633146105c75760405162461bcd60e51b81526004016105be90612cfe565b60405180910390fd5b8115610662576001600160a01b0383161515806105e15750805b6105fd5760405162461bcd60e51b81526004016105be90612c18565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b03199182161790915560018054909116905561067e565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061287f565b604051631526fe2760e01b81526107f0906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631526fe279061078c907f000000000000000000000000000000000000000000000000000000000000000090600401612ee9565b60806040518083038186803b1580156107a457600080fd5b505afa1580156107b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dc9190612815565b6020015168056bc75e2d6310000090612179565b816107f757fe5b04905090565b610805612575565b61080e846112d9565b600085815260066020908152604080832033845290915290208151919250906108609064e8d4a510009061084c9087906001600160801b0316612179565b8161085357fe5b60018401549190046121b6565b600182015580546108719085612203565b815560058054600091908790811061088557fe5b6000918252602090912001546001600160a01b03169050801561090b57815460405163569db41b60e11b81526001600160a01b0383169163ad3b6836916108d8918a9133918a9160009190600401612ef2565b600060405180830381600087803b1580156108f257600080fd5b505af1158015610906573d6000803e3d6000fd5b505050505b61093984866004898154811061091d57fe5b6000918252602090912001546001600160a01b03169190612226565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328860405161097d9190612ee9565b60405180910390a4505050505050565b6003818154811061099a57fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b6109dd612575565b6109e6836112d9565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a5100091610a2291906001600160801b0316612179565b81610a2957fe5b0490506000610a4d610a488460010154846121b690919063ffffffff16565b612314565b6001840183905590508015610a9057610a906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683612226565b600060058781548110610a9f57fe5b6000918252602090912001546001600160a01b031690508015610b2457835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691610af1918b9133918c91899190600401612ef2565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051610b5e9190612ee9565b60405180910390a350505050505050565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610b9e9033906004016129ca565b60206040518083038186803b158015610bb657600080fd5b505afa158015610bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bee919061287f565b905080610c0d5760405162461bcd60e51b81526004016105be90612b5d565b610c226001600160a01b03831633308461233a565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b390610c70907f0000000000000000000000000000000000000000000000000000000000000000908590600401612a43565b602060405180830381600087803b158015610c8a57600080fd5b505af1158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906126af565b50604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb15890610d31907f0000000000000000000000000000000000000000000000000000000000000000908590600401612f31565b600060405180830381600087803b158015610d4b57600080fd5b505af1158015610d5f573d6000803e3d6000fd5b50506040517f98a9bd3b7a617581fc53b1e2992534e0e0cb5091c9d44aa1a7fc978f706caa83925060009150a15050565b6000546001600160a01b03163314610dba5760405162461bcd60e51b81526004016105be90612cfe565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610e1357fe5b6000918252602090912001546001600160a01b031690508015610e985760405163569db41b60e11b81526001600160a01b0382169063ad3b683690610e65908890339089906000908190600401612ef2565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b610eaa84836004888154811061091d57fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610eee9190612ee9565b60405180910390a45050505050565b6002546001600160a01b0316610f255760405162461bcd60e51b81526004016105be90612d9f565b600060048281548110610f3457fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610f6f9030906004016129ca565b60206040518083038186803b158015610f8757600080fd5b505afa158015610f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbf919061287f565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610ff49216908590600401612a43565b602060405180830381600087803b15801561100e57600080fd5b505af1158015611022573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104691906126af565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb906110789086906004016129ca565b602060405180830381600087803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ca91906126e7565b6040516370a0823160e01b81529091506001600160a01b038216906370a08231906110f99030906004016129ca565b60206040518083038186803b15801561111157600080fd5b505afa158015611125573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611149919061287f565b82146111675760405162461bcd60e51b81526004016105be90612c47565b806004858154811061117557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b03163381146111d45760405162461bcd60e51b81526004016105be90612d33565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb158906112a5907f000000000000000000000000000000000000000000000000000000000000000090600090600401612f31565b600060405180830381600087803b1580156112bf57600080fd5b505af11580156112d3573d6000803e3d6000fd5b50505050565b6112e1612575565b600382815481106112ee57fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915043111561155b5760006004838154811061135057fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906113899030906004016129ca565b60206040518083038186803b1580156113a157600080fd5b505afa1580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d9919061287f565b9050801561147f57600061140383602001516001600160401b03164361220390919063ffffffff16565b9050600060075461143385604001516001600160401b031661142d611426610689565b8690612179565b90612179565b8161143a57fe5b049050611471611460846114538464e8d4a51000612179565b8161145a57fe5b0461242b565b85516001600160801b031690612454565b6001600160801b0316845250505b61148843612483565b6001600160401b0316602083015260038054839190859081106114a757fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926115519290918691612f3f565b60405180910390a2505b919050565b8060005b818110156112d35761158784848381811061157b57fe5b905060200201356112d9565b50600101611564565b7f000000000000000000000000000000000000000000000000000000000000000081565b600481815481106115c157fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90611613908a908a908a908a908a908a908a90600401612a02565b600060405180830381600087803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000611668612575565b6003848154811061167557fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b03891686529092529183208251600480549496509194921692889081106116f357fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a082319061172c9030906004016129ca565b60206040518083038186803b15801561174457600080fd5b505afa158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c919061287f565b905083602001516001600160401b03164311801561179957508015155b156118155760006117c085602001516001600160401b03164361220390919063ffffffff16565b905060006007546117e387604001516001600160401b031661142d611426610689565b816117ea57fe5b049050611810836118008364e8d4a51000612179565b8161180757fe5b869190046124ac565b935050505b6001830154835461184391610a489164e8d4a51000906118359087612179565b8161183c57fe5b04906121b6565b979650505050505050565b6000546001600160a01b031633146118785760405162461bcd60e51b81526004016105be90612cfe565b6118b7836118b16003878154811061188c57fe5b60009182526020909120015460075490600160c01b90046001600160401b0316612203565b906124ac565b6007556118c383612483565b600385815481106118d057fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561194457816005858154811061191557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611970576005848154811061195657fe5b6000918252602090912001546001600160a01b0316611972565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e186585846040516119ad929190612f21565b60405180910390a350505050565b6000546001600160a01b031681565b6119d2612575565b6119db846112d9565b60008581526006602090815260408083206001600160a01b03871684529091529020805491925090611a0d90856124ac565b81558151611a449064e8d4a5100090611a309087906001600160801b0316612179565b81611a3757fe5b60018401549190046124cf565b8160010181905550600060058681548110611a5b57fe5b6000918252602090912001546001600160a01b031690508015611ae157815460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611aae918a918991829160009190600401612ef2565b600060405180830381600087803b158015611ac857600080fd5b505af1158015611adc573d6000803e3d6000fd5b505050505b611b1133308760048a81548110611af457fe5b6000918252602090912001546001600160a01b031692919061233a565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478860405161097d9190612ee9565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b03163314611ba35760405162461bcd60e51b81526004016105be90612cfe565b6007544390611bb290856124ac565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038087166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909301805492861692909116919091179055604080516060810190915290815260039060208101611c5f84612483565b6001600160401b03168152602001611c7687612483565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b038085169290861691611d1591612203565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e587604051611d449190612ee9565b60405180910390a450505050565b600581815481106115c157fe5b611d67612575565b611d70846112d9565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a5100091611dac91906001600160801b0316612179565b81611db357fe5b0490506000611dd2610a488460010154846121b690919063ffffffff16565b9050611e0d64e8d4a51000611dfd86600001516001600160801b03168961217990919063ffffffff16565b81611e0457fe5b849190046121b6565b60018401558254611e1e9087612203565b8355611e546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683612226565b600060058881548110611e6357fe5b6000918252602090912001546001600160a01b031690508015611ee857835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611eb5918c9133918c91899190600401612ef2565b600060405180830381600087803b158015611ecf57600080fd5b505af1158015611ee3573d6000803e3d6000fd5b505050505b611efa868860048b8154811061091d57fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611f3e9190612ee9565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611f809190612ee9565b60405180910390a35050505050505050565b606080836001600160401b0381118015611fab57600080fd5b50604051908082528060200260200182016040528015611fd5578160200160208202803683370190505b509150836001600160401b0381118015611fee57600080fd5b5060405190808252806020026020018201604052801561202257816020015b606081526020019060019003908161200d5790505b50905060005b8481101561211957600060603088888581811061204157fe5b90506020028101906120539190612f69565b60405161206192919061299e565b600060405180830381855af49150503d806000811461209c576040519150601f19603f3d011682016040523d82523d6000602084013e6120a1565b606091505b509150915081806120b0575085155b6120b982612515565b906120d75760405162461bcd60e51b81526004016105be9190612af6565b50818584815181106120e557fe5b6020026020010190151590811515815250508084848151811061210457fe5b60209081029190910101525050600101612028565b50935093915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008115806121945750508082028282828161219157fe5b04145b6121b05760405162461bcd60e51b81526004016105be90612e4f565b92915050565b60008183038183128015906121cb5750838113155b806121e057506000831280156121e057508381135b6121fc5760405162461bcd60e51b81526004016105be90612dd6565b9392505050565b808203828111156121b05760405162461bcd60e51b81526004016105be90612b09565b60006060846001600160a01b031663a9059cbb858560405160240161224c929190612a43565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161228591906129ae565b6000604051808303816000865af19150503d80600081146122c2576040519150601f19603f3d011682016040523d82523d6000602084013e6122c7565b606091505b50915091508180156122f15750805115806122f15750808060200190518101906122f191906126af565b61230d5760405162461bcd60e51b81526004016105be90612ba0565b5050505050565b6000808212156123365760405162461bcd60e51b81526004016105be90612b38565b5090565b60006060856001600160a01b03166323b872dd868686604051602401612362939291906129de565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161239b91906129ae565b6000604051808303816000865af19150503d80600081146123d8576040519150601f19603f3d011682016040523d82523d6000602084013e6123dd565b606091505b509150915081801561240757508051158061240757508080602001905181019061240791906126af565b6124235760405162461bcd60e51b81526004016105be90612e1a565b505050505050565b60006001600160801b038211156123365760405162461bcd60e51b81526004016105be90612c90565b8181016001600160801b0380831690821610156121b05760405162461bcd60e51b81526004016105be90612cc7565b60006001600160401b038211156123365760405162461bcd60e51b81526004016105be90612d68565b818101818110156121b05760405162461bcd60e51b81526004016105be90612cc7565b60008282018183128015906124e45750838112155b806124f957506000831280156124f957508381125b6121fc5760405162461bcd60e51b81526004016105be90612bd7565b606060448251101561255b575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261155b565b600482019150818060200190518101906121b0919061278a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f8401126125a6578182fd5b5081356001600160401b038111156125bc578182fd5b60208301915083602080830285010111156125d657600080fd5b9250929050565b6000806000606084860312156125f1578283fd5b83356125fc81612fff565b9250602084013561260c81613017565b9150604084013561261c81613017565b809150509250925092565b60008060006040848603121561263b578283fd5b83356001600160401b03811115612650578384fd5b61265c86828701612595565b909450925050602084013561261c81613017565b60008060208385031215612682578182fd5b82356001600160401b03811115612697578283fd5b6126a385828601612595565b90969095509350505050565b6000602082840312156126c0578081fd5b81516121fc81613017565b6000602082840312156126dc578081fd5b81356121fc81612fff565b6000602082840312156126f8578081fd5b81516121fc81612fff565b600080600080600080600080610100898b03121561271f578384fd5b883561272a81612fff565b9750602089013561273a81612fff565b9650604089013561274a81612fff565b9550606089013594506080890135935060a089013560ff8116811461276d578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561279b578081fd5b81516001600160401b03808211156127b1578283fd5b818401915084601f8301126127c4578283fd5b8151818111156127d2578384fd5b6127e5601f8201601f1916602001612fad565b91508082528560208285010111156127fb578384fd5b61280c816020840160208601612fd3565b50949350505050565b600060808284031215612826578081fd5b6128306080612fad565b825161283b81612fff565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612878578081fd5b5035919050565b600060208284031215612890578081fd5b5051919050565b600080604083850312156128a9578182fd5b8235915060208301356128bb81612fff565b809150509250929050565b6000806000606084860312156128da578081fd5b8335925060208401356128ec81612fff565b9150604084013561261c81612fff565b600080600060608486031215612910578081fd5b8335925060208401359150604084013561261c81612fff565b6000806000806080858703121561293e578182fd5b8435935060208501359250604085013561295781612fff565b9150606085013561296781613017565b939692955090935050565b6000815180845261298a816020860160208601612fd3565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b600082516129c0818460208701612fd3565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b82811015612a97578151151584529284019290840190600101612a79565b50505083810382850152808551612aae8184612ee9565b91508192508381028201848801865b83811015612ae7578583038552612ad5838351612972565b94870194925090860190600101612abd565b50909998505050505050505050565b6000602082526121fc6020830184612972565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b60208082526023908201527f4d61737465724368656656323a2042616c616e6365206d75737420657863656560408201526206420360ec1b606082015260800190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d6040820152680eae6e840dac2e8c6d60bb1b606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612f7f578283fd5b8301803591506001600160401b03821115612f98578283fd5b6020019150368190038213156125d657600080fd5b6040518181016001600160401b0381118282101715612fcb57600080fd5b604052919050565b60005b83811015612fee578181015183820152602001612fd6565b838111156112d35750506000910152565b6001600160a01b038116811461301457600080fd5b50565b801515811461301457600080fdfea26469706673582212205a757c92cea215fe95383195a892d7ebcffa4ee2393b54590e1212febc79872764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x61621AAA GT PUSH2 0x102 JUMPI DUP1 PUSH4 0x93F1A40B GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xD2423B51 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x555 JUMPI DUP1 PUSH4 0xE7D77CBA EQ PUSH2 0x56A JUMPI DUP1 PUSH4 0xEDD8B170 EQ PUSH2 0x57F JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0xAB7DE098 EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x514 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x86F227F5 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x86F227F5 EQ PUSH2 0x431 JUMPI DUP1 PUSH4 0x88BBA42F EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x471 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x486 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x61621AAA EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x41C JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x19AB453C GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x4E71E0C8 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x4F70B15A EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x39A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x19AB453C EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x323 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xAD58D2F GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x2A3 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xA016189 EQ PUSH2 0x22A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x25DD JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x683 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x689 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x25A CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27F PUSH2 0x27A CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x98D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2EBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x9CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2BE CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x9D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x26CB JUMP JUMPDEST PUSH2 0xB6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x26CB JUMP JUMPDEST PUSH2 0xD90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0xDDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0xEFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x11A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1236 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH2 0x388 CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x2E86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2670 JUMP JUMPDEST PUSH2 0x1560 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x1590 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x29CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x417 CALLDATASIZE PUSH1 0x4 PUSH2 0x2703 JUMP JUMPDEST PUSH2 0x15DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x164F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x165E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x46C CALLDATASIZE PUSH1 0x4 PUSH2 0x2929 JUMP JUMPDEST PUSH2 0x184E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x19BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x4A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x19CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C6 PUSH2 0x4C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x1B55 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x2F31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x28C6 JUMP JUMPDEST PUSH2 0x1B79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x50F CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x1D52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x52F CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x1D5F JUMP JUMPDEST PUSH2 0x547 PUSH2 0x542 CALLDATASIZE PUSH1 0x4 PUSH2 0x2627 JUMP JUMPDEST PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x2A5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x561 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x2122 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x2131 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x2155 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x662 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x5E1 JUMPI POP DUP1 JUMPDEST PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C18 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x67E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17CAF6F1 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 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x71C SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1526FE27 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x7F0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1526FE27 SWAP1 PUSH2 0x78C SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7DC SWAP2 SWAP1 PUSH2 0x2815 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH9 0x56BC75E2D63100000 SWAP1 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x7F7 JUMPI INVALID JUMPDEST DIV SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x805 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x80E DUP5 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x860 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x84C SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x853 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x21B6 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE DUP1 SLOAD PUSH2 0x871 SWAP1 DUP6 PUSH2 0x2203 JUMP JUMPDEST DUP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x885 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x90B JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x8D8 SWAP2 DUP11 SWAP2 CALLER SWAP2 DUP11 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x906 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x939 DUP5 DUP7 PUSH1 0x4 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x91D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x2226 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x97D SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x99A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x9DD PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x9E6 DUP4 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0xA22 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0xA29 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0xA4D PUSH2 0xA48 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x21B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2314 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0xA90 JUMPI PUSH2 0xA90 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x2226 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xA9F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xB24 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0xAF1 SWAP2 DUP12 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB5E SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xB9E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBEE SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xC0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH2 0xC22 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x233A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xC70 SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCC2 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x1C57762B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0xD31 SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x98A9BD3B7A617581FC53B1E2992534E0E0CB5091C9D44AA1A7FC978F706CAA83 SWAP3 POP PUSH1 0x0 SWAP2 POP LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xDBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP1 DUP2 LT PUSH2 0xE13 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xE98 JUMPI PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAD3B6836 SWAP1 PUSH2 0xE65 SWAP1 DUP9 SWAP1 CALLER SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xEAA DUP5 DUP4 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x91D JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP6 PUSH1 0x40 MLOAD PUSH2 0xEEE SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xF34 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 POP DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xF6F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFBF SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xFF4 SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x100E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1022 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1046 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCE5494BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xCE5494BB SWAP1 PUSH2 0x1078 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1092 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10CA SWAP2 SWAP1 PUSH2 0x26E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x10F9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1125 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1149 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST DUP3 EQ PUSH2 0x1167 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C47 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1175 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x11D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D33 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1C57762B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0x12A5 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x12E1 PUSH2 0x2575 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x12EE JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP1 DUP3 ADD MSTORE SWAP2 POP NUMBER GT ISZERO PUSH2 0x155B JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1350 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1389 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13D9 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x147F JUMPI PUSH1 0x0 PUSH2 0x1403 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0x2203 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x1433 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x142D PUSH2 0x1426 PUSH2 0x689 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x2179 JUMP JUMPDEST SWAP1 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x143A JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1471 PUSH2 0x1460 DUP5 PUSH2 0x1453 DUP5 PUSH5 0xE8D4A51000 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x145A JUMPI INVALID JUMPDEST DIV PUSH2 0x242B JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x1488 NUMBER PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x14A7 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD SWAP2 ADD DUP1 SLOAD DUP5 DUP5 ADD MLOAD PUSH1 0x40 SWAP6 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0x1551 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x2F3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x12D3 JUMPI PUSH2 0x1587 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x157B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x12D9 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1564 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x15C1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x1613 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x162D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1641 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1668 PUSH2 0x2575 JUMP JUMPDEST PUSH1 0x3 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1675 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP6 ADD MSTORE DUP9 DUP6 MSTORE PUSH1 0x6 DUP4 MSTORE DUP4 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP2 DUP4 KECCAK256 DUP3 MLOAD PUSH1 0x4 DUP1 SLOAD SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP3 AND SWAP3 DUP9 SWAP1 DUP2 LT PUSH2 0x16F3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x172C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1744 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1758 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x177C SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT DUP1 ISZERO PUSH2 0x1799 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 PUSH2 0x17C0 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0x2203 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x17E3 DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x142D PUSH2 0x1426 PUSH2 0x689 JUMP JUMPDEST DUP2 PUSH2 0x17EA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1810 DUP4 PUSH2 0x1800 DUP4 PUSH5 0xE8D4A51000 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1807 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0x24AC JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x1843 SWAP2 PUSH2 0xA48 SWAP2 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x1835 SWAP1 DUP8 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x183C JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x21B6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1878 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CFE JUMP JUMPDEST PUSH2 0x18B7 DUP4 PUSH2 0x18B1 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x188C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x7 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x2203 JUMP JUMPDEST SWAP1 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x18C3 DUP4 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x18D0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1944 JUMPI DUP2 PUSH1 0x5 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1915 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x1970 JUMPI PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1956 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1972 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x95895A6AB1DF54420D241B55243258A33E61B2194DB66C1179EC521AAE8E1865 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x19AD SWAP3 SWAP2 SWAP1 PUSH2 0x2F21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x19D2 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x19DB DUP5 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x1A0D SWAP1 DUP6 PUSH2 0x24AC JUMP JUMPDEST DUP2 SSTORE DUP2 MLOAD PUSH2 0x1A44 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x1A30 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1A37 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x24CF JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1A5B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x1AE1 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x1AAE SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP3 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1ADC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1B11 CALLER ADDRESS DUP8 PUSH1 0x4 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x1AF4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x233A JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x97D SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1BA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x7 SLOAD NUMBER SWAP1 PUSH2 0x1BB2 SWAP1 DUP6 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD SWAP1 SWAP3 SSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP5 ADD DUP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 PUSH1 0x20 DUP2 ADD PUSH2 0x1C5F DUP5 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C76 DUP8 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 DUP5 MLOAD SWAP3 ADD DUP1 SLOAD SWAP6 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD DUP5 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP6 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP3 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 SWAP1 DUP7 AND SWAP2 PUSH2 0x1D15 SWAP2 PUSH2 0x2203 JUMP JUMPDEST PUSH32 0x81EE0F8C5C46E2CB41984886F77A84181724ABB86C32A5F6DE539B07509D45E5 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1D44 SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x15C1 JUMPI INVALID JUMPDEST PUSH2 0x1D67 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x1D70 DUP5 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x1DAC SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1DB3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x1DD2 PUSH2 0xA48 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x21B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1E0D PUSH5 0xE8D4A51000 PUSH2 0x1DFD DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x2179 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x1E04 JUMPI INVALID JUMPDEST DUP5 SWAP2 SWAP1 DIV PUSH2 0x21B6 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE DUP3 SLOAD PUSH2 0x1E1E SWAP1 DUP8 PUSH2 0x2203 JUMP JUMPDEST DUP4 SSTORE PUSH2 0x1E54 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x2226 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x1E63 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x1EE8 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x1EB5 SWAP2 DUP13 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ECF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1EFA DUP7 DUP9 PUSH1 0x4 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x91D JUMPI INVALID JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1F3E SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1F80 SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1FAB 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 0x1FD5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1FEE 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 0x2022 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x200D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2119 JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x2041 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2053 SWAP2 SWAP1 PUSH2 0x2F69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2061 SWAP3 SWAP2 SWAP1 PUSH2 0x299E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x209C 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 0x20A1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x20B0 JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x20B9 DUP3 PUSH2 0x2515 JUMP JUMPDEST SWAP1 PUSH2 0x20D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP2 SWAP1 PUSH2 0x2AF6 JUMP JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x20E5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2104 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2028 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2194 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2191 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x21CB JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x21E0 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x21E0 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0x21FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2DD6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x224C SWAP3 SWAP2 SWAP1 PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x2285 SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x22C2 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 0x22C7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x22F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x22F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22F1 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST PUSH2 0x230D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2BA0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B38 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2362 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x239B SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23D8 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 0x23DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2407 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2407 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2407 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST PUSH2 0x2423 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2E1A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C90 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D68 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CC7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x24E4 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x24F9 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x24F9 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0x21FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2BD7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x255B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x155B JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21B0 SWAP2 SWAP1 PUSH2 0x278A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x25A6 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25BC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x25D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x25F1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x25FC DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x260C DUP2 PUSH2 0x3017 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x3017 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x263B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2650 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x265C DUP7 DUP3 DUP8 ADD PUSH2 0x2595 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x3017 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2682 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2697 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x26A3 DUP6 DUP3 DUP7 ADD PUSH2 0x2595 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21FC DUP2 PUSH2 0x3017 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26DC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21FC DUP2 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26F8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21FC DUP2 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x271F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x272A DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x273A DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x274A DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x276D JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x279B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x27B1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27C4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x27D2 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x27E5 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2FAD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x27FB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x280C DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2FD3 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2826 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2830 PUSH1 0x80 PUSH2 0x2FAD JUMP JUMPDEST DUP3 MLOAD PUSH2 0x283B DUP2 PUSH2 0x2FFF JUMP JUMPDEST DUP1 DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2878 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2890 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28A9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x28BB DUP2 PUSH2 0x2FFF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x28DA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x28EC DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2910 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x293E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2957 DUP2 PUSH2 0x2FFF JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2967 DUP2 PUSH2 0x3017 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x298A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x29C0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2FD3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2A97 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2A79 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x2AAE DUP2 DUP5 PUSH2 0x2EE9 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AE7 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x2AD5 DUP4 DUP4 MLOAD PUSH2 0x2972 JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2ABD JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x21FC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2972 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH11 0x496E7465676572203C203 PUSH1 0xAC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A2042616C616E6365206D757374206578636565 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x64203 PUSH1 0xEC SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A206D696772617465642062616C616E6365206D PUSH1 0x40 DUP3 ADD MSTORE PUSH9 0xEAE6E840DAC2E8C6D PUSH1 0xBB SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1D SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A206E6F206D69677261746F7220736574000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F7F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2F98 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x25D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2FCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FEE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2FD6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x12D3 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3014 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS PUSH22 0x7C92CEA215FE95383195A892D7EBCFFA4EE2393B5459 0xE SLT SLT INVALID 0xBC PUSH26 0x872764736F6C634300060C003300000000000000000000000000 ",
              "sourceMap": "1095:13895:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472:1;;;;;;;;;;-1:-1:-1;774:472:1;;;;;:::i;:::-;;:::i;:::-;;4839:98:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8894:217;;;;;;;;;;;;;:::i;11168:670::-;;;;;;;;;;-1:-1:-1;11168:670:5;;;;;:::i;:::-;;:::i;2265:26::-;;;;;;;;;;-1:-1:-1;2265:26:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2695:30::-;;;;;;;;;;;;;:::i;12009:788::-;;;;;;;;;;-1:-1:-1;12009:788:5;;;;;:::i;:::-;;:::i;4401:385::-;;;;;;;;;;-1:-1:-1;4401:385:5;;;;;:::i;:::-;;:::i;6720:100::-;;;;;;;;;;-1:-1:-1;6720:100:5;;;;;:::i;:::-;;:::i;14427:561::-;;;;;;;;;;-1:-1:-1;14427:561:5;;;;;:::i;:::-;;:::i;6971:474::-;;;;;;;;;;-1:-1:-1;6971:474:5;;;;;:::i;:::-;;:::i;1295:348:1:-;;;;;;;;;;;;;:::i;14159:91:5:-;;;;;;;;;;;;;:::i;9287:772::-;;;;;;;;;;-1:-1:-1;9287:772:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8631:188::-;;;;;;;;;;-1:-1:-1;8631:188:5;;;;;:::i;:::-;;:::i;2049:35::-;;;;;;;;;;;;;:::i;2354:23::-;;;;;;;;;;-1:-1:-1;2354:23:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2161:246:0:-;;;;;;;;;;-1:-1:-1;2161:246:0;;;;;:::i;:::-;;:::i;2192:29:5:-;;;;;;;;;;;;;:::i;7664:792::-;;;;;;;;;;-1:-1:-1;7664:792:5;;;;;:::i;:::-;;:::i;6179:406::-;;;;;;;;;;-1:-1:-1;6179:406:5;;;;;:::i;:::-;;:::i;350:20:1:-;;;;;;;;;;;;;:::i;10294:671:5:-;;;;;;;;;;-1:-1:-1;10294:671:5;;;;;:::i;:::-;;:::i;2530:66::-;;;;;;;;;;-1:-1:-1;2530:66:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;5266:529::-;;;;;;;;;;-1:-1:-1;5266:529:5;;;;;:::i;:::-;;:::i;2442:27::-;;;;;;;;;;-1:-1:-1;2442:27:5;;;;;:::i;:::-;;:::i;13074:982::-;;;;;;;;;;-1:-1:-1;13074:982:5;;;;;:::i;:::-;;:::i;1260:554:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;397:27:1:-;;;;;;;;;;;;;:::i;1962:29:5:-;;;;;;;;;;;;;:::i;1876:40::-;;;;;;;;;;;;;:::i;774:472:1:-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;;-1:-1:-1::0;;;925:68:1::1;;;;;;;:::i;:::-;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;4839:98:5:-;4915:8;:15;;4839:98::o;8894:217::-;8940:14;9075:11;-1:-1:-1;;;;;9075:27:5;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9028:32;;-1:-1:-1;;;9028:32:5;;8975:97;;-1:-1:-1;;;;;9028:11:5;:20;;;;:32;;9049:10;;9028:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;2786:4;;8975:52;:97::i;:::-;:129;;;;;;8966:138;;8894:217;:::o;11168:670::-;11244:20;;:::i;:::-;11267:15;11278:3;11267:10;:15::i;:::-;11292:21;11316:13;;;:8;:13;;;;;;;;11330:10;11316:25;;;;;;;11427:21;;11244:38;;-1:-1:-1;11316:25:5;11389:84;;2843:4;;11416:33;;:6;;-1:-1:-1;;;;;11416:33:5;:10;:33::i;:::-;:55;;;;;11389:15;;;;;11416:55;;11389:19;:84::i;:::-;11371:15;;;:102;11497:11;;:23;;11513:6;11497:15;:23::i;:::-;11483:37;;11577:8;:13;;11483:11;;11577:8;11586:3;;11577:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11577:13:5;;-1:-1:-1;11604:32:5;;11600:123;;11700:11;;11652:60;;-1:-1:-1;;;11652:60:5;;-1:-1:-1;;;;;11652:23:5;;;;;:60;;11676:3;;11681:10;;11693:2;;11697:1;;11700:11;11652:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11600:123;11741:37;11767:2;11771:6;11741:7;11749:3;11741:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11741:12:5;;:37;:25;:37::i;:::-;11828:2;-1:-1:-1;;;;;11794:37:5;11815:3;11803:10;-1:-1:-1;;;;;11794:37:5;;11820:6;11794:37;;;;;;:::i;:::-;;;;;;;;11168:670;;;;;;:::o;2265:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2265:26:5;;;-1:-1:-1;;;;;;;;;2265:26:5;;;;;-1:-1:-1;;;2265:26:5;;;;:::o;2695:30::-;;;;:::o;12009:788::-;12068:20;;:::i;:::-;12091:15;12102:3;12091:10;:15::i;:::-;12116:21;12140:13;;;:8;:13;;;;;;;;12154:10;12140:25;;;;;;;12224:21;;12208:11;;12068:38;;-1:-1:-1;12140:25:5;;2843:4;;12208:38;;:11;-1:-1:-1;;;;;12208:38:5;:15;:38::i;:::-;:60;;;;;;12175:94;;12279:21;12303:49;:37;12324:4;:15;;;12303:16;:20;;:37;;;;:::i;:::-;:47;:49::i;:::-;12382:15;;;:34;;;12279:73;-1:-1:-1;12455:18:5;;12451:86;;12489:37;-1:-1:-1;;;;;12489:5:5;:18;12508:2;12512:13;12489:18;:37::i;:::-;12555:19;12577:8;12586:3;12577:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12577:13:5;;-1:-1:-1;12604:32:5;;12600:136;;12713:11;;12652:73;;-1:-1:-1;;;12652:73:5;;-1:-1:-1;;;;;12652:23:5;;;;;:73;;12677:3;;12682:10;;12694:2;;12698:13;;12713:11;12652:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12600:136;12771:3;12759:10;-1:-1:-1;;;;;12751:39:5;;12776:13;12751:39;;;;;;:::i;:::-;;;;;;;;12009:788;;;;;;;:::o;4401:385::-;4471:32;;-1:-1:-1;;;4471:32:5;;4453:15;;-1:-1:-1;;;;;4471:20:5;;;;;:32;;4492:10;;4471:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4453:50;-1:-1:-1;4521:12:5;4513:60;;;;-1:-1:-1;;;4513:60:5;;;;;;;:::i;:::-;4583:63;-1:-1:-1;;;;;4583:27:5;;4611:10;4631:4;4638:7;4583:27;:63::i;:::-;4656:49;;-1:-1:-1;;;4656:49:5;;-1:-1:-1;;;;;4656:18:5;;;;;:49;;4683:11;;4697:7;;4656:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4715:40:5;;-1:-1:-1;;;4715:40:5;;-1:-1:-1;;;;;4715:11:5;:19;;;;:40;;4735:10;;4747:7;;4715:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4770:9:5;;;;-1:-1:-1;4770:9:5;;-1:-1:-1;4770:9:5;4401:385;;:::o;6720:100::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;6793:8:5::1;:20:::0;;-1:-1:-1;;;;;;6793:20:5::1;-1:-1:-1::0;;;;;6793:20:5;;;::::1;::::0;;;::::1;::::0;;6720:100::o;14427:561::-;14496:21;14520:13;;;:8;:13;;;;;;;;14534:10;14520:25;;;;;;;14572:11;;14593:15;;;-1:-1:-1;14618:15:5;;:19;;;14670:8;:13;;14520:25;;14572:11;;14529:3;;14670:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14670:13:5;;-1:-1:-1;14697:32:5;;14693:113;;14745:50;;-1:-1:-1;;;14745:50:5;;-1:-1:-1;;;;;14745:23:5;;;;;:50;;14769:3;;14774:10;;14786:2;;14790:1;;;;14745:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14693:113;14883:37;14909:2;14913:6;14883:7;14891:3;14883:12;;;;;;;:37;14978:2;-1:-1:-1;;;;;14935:46:5;14965:3;14953:10;-1:-1:-1;;;;;14935:46:5;;14970:6;14935:46;;;;;;:::i;:::-;;;;;;;;14427:561;;;;;:::o;6971:474::-;7035:8;;-1:-1:-1;;;;;7035:8:5;7019:73;;;;-1:-1:-1;;;7019:73:5;;;;;;;:::i;:::-;7102:15;7120:7;7128:4;7120:13;;;;;;;;;;;;;;;;;7157:33;;-1:-1:-1;;;7157:33:5;;-1:-1:-1;;;;;7120:13:5;;;;-1:-1:-1;7120:13:5;;7157:18;;:33;;7184:4;;7157:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7225:8;;7200:40;;-1:-1:-1;;;7200:40:5;;7143:47;;-1:-1:-1;;;;;;7200:16:5;;;;;;:40;;7225:8;;7143:47;;7200:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7270:8:5;;:26;;-1:-1:-1;;;7270:26:5;;7250:17;;-1:-1:-1;;;;;7270:8:5;;:16;;:26;;7287:8;;7270:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7321:35;;-1:-1:-1;;;7321:35:5;;7250:46;;-1:-1:-1;;;;;;7321:20:5;;;;;:35;;7350:4;;7321:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7314:3;:42;7306:96;;;;-1:-1:-1;;;7306:96:5;;;;;;;:::i;:::-;7428:10;7412:7;7420:4;7412:13;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1;;;;;7412:26:5;;;;;-1:-1:-1;;;;;7412:26:5;;;;;;6971:474;;;;:::o;1295:348:1:-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;-1:-1:-1;;;1415:72:1;;;;;;;:::i;:::-;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;14159:91:5:-;14209:34;;-1:-1:-1;;;14209:34:5;;-1:-1:-1;;;;;14209:11:5;:19;;;;:34;;14229:10;;14241:1;;14209:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14159:91::o;9287:772::-;9336:20;;:::i;:::-;9375:8;9384:3;9375:13;;;;;;;;;;;;;;;;;9368:20;;;;;;;;9375:13;;;;9368:20;-1:-1:-1;;;;;9368:20:5;;;;-1:-1:-1;;;;;;;;9368:20:5;;;;;;;;;;-1:-1:-1;;;9368:20:5;;;;;;;;;-1:-1:-1;9402:12:5;:35;9398:655;;;9453:16;9472:7;9480:3;9472:12;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;9472:37:5;;-1:-1:-1;;;;;9472:12:5;;;;:22;;:37;;9503:4;;9472:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9453:56;-1:-1:-1;9527:12:5;;9523:338;;9559:14;9576:38;9593:4;:20;;;-1:-1:-1;;;;;9576:38:5;:12;:16;;:38;;;;:::i;:::-;9559:55;;9632:19;9705:15;;9654:48;9686:4;:15;;;-1:-1:-1;;;;;9654:48:5;:27;9665:15;:13;:15::i;:::-;9654:6;;:10;:27::i;:::-;:31;;:48::i;:::-;:66;;;;;;;-1:-1:-1;9762:84:5;9788:57;9828:8;9789:36;9654:66;2843:4;9789:15;:36::i;:::-;:47;;;;;;9788:55;:57::i;:::-;9762:21;;-1:-1:-1;;;;;9762:25:5;;;:84::i;:::-;-1:-1:-1;;;;;9738:108:5;;;-1:-1:-1;;9523:338:5;9897:19;:12;:17;:19::i;:::-;-1:-1:-1;;;;;9874:42:5;:20;;;:42;9930:8;:13;;9874:4;;9930:8;9939:3;;9930:13;;;;;;;;;;;;;;;:20;;:13;;:20;;;;;;;;;;;-1:-1:-1;;;;;;9930:20:5;;;-1:-1:-1;;;;;9930:20:5;;;;;;;-1:-1:-1;;;;9930:20:5;-1:-1:-1;;;;;;;;9930:20:5;;;;;-1:-1:-1;;;;;9930:20:5;-1:-1:-1;;;9930:20:5;;;;;;;;;;;;;;9988;;;10020:21;;9969:73;;9983:3;;9969:73;;;;9988:20;;10010:8;;9969:73;:::i;:::-;;;;;;;;9398:655;;9287:772;;;:::o;8631:188::-;8714:4;8700:11;8735:78;8759:3;8755:1;:7;8735:78;;;8783:19;8794:4;;8799:1;8794:7;;;;;;;;;;;;;8783:10;:19::i;:::-;-1:-1:-1;8764:3:5;;8735:78;;2049:35;;;:::o;2354:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2354:23:5;;-1:-1:-1;2354:23:5;:::o;2161:246:0:-;2350:49;;-1:-1:-1;;;2350:49:0;;-1:-1:-1;;;;;2350:12:0;;;;;:49;;2363:4;;2369:2;;2373:6;;2381:8;;2391:1;;2394;;2397;;2350:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:246;;;;;;;;:::o;2192:29:5:-;;;-1:-1:-1;;;;;2192:29:5;;:::o;7664:792::-;7738:15;7765:20;;:::i;:::-;7788:8;7797:4;7788:14;;;;;;;;;;;;;;;;7765:37;;;;;;;;7788:14;;;;7765:37;-1:-1:-1;;;;;7765:37:5;;;;;-1:-1:-1;;;;;;;;7765:37:5;;;;;;;;-1:-1:-1;;;7765:37:5;;;;;;;;;;7836:14;;;:8;:14;;;;;-1:-1:-1;;;;;7836:21:5;;;;;;;;;;7894;;7944:7;:13;;7765:37;;-1:-1:-1;7836:21:5;;7867:48;;;7845:4;;7944:13;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;7944:38:5;;-1:-1:-1;;;;;7944:13:5;;;;:23;;:38;;7976:4;;7944:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7925:57;;8011:4;:20;;;-1:-1:-1;;;;;7996:35:5;:12;:35;:52;;;;-1:-1:-1;8035:13:5;;;7996:52;7992:342;;;8064:14;8081:38;8098:4;:20;;;-1:-1:-1;;;;;8081:38:5;:12;:16;;:38;;;;:::i;:::-;8064:55;;8133:19;8206:15;;8155:48;8187:4;:15;;;-1:-1:-1;;;;;8155:48:5;:27;8166:15;:13;:15::i;8155:48::-;:66;;;;;;;-1:-1:-1;8254:69:5;8314:8;8275:36;8155:66;2843:4;8275:15;:36::i;:::-;:47;;;;;8254:16;;8275:47;;8254:20;:69::i;:::-;8235:88;;7992:342;;;8421:15;;;;8360:11;;8353:96;;:84;;2843:4;;8360:33;;8376:16;8360:15;:33::i;:::-;:55;;;;;;;8353:67;:84::i;:96::-;8343:106;7664:792;-1:-1:-1;;;;;;;7664:792:5:o;6179:406::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;6309:63:5::1;6360:11;6309:46;6329:8;6338:4;6329:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:25:::0;6309:15:::1;::::0;;-1:-1:-1;;;6329:25:5;::::1;-1:-1:-1::0;;;;;6329:25:5::1;6309:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;6291:15;:81:::0;6410:18:::1;:11:::0;:16:::1;:18::i;:::-;6382:8;6391:4;6382:14;;;;;;;;;;;;;;;:25;;;:46;;;;;-1:-1:-1::0;;;;;6382:46:5::1;;;;;-1:-1:-1::0;;;;;6382:46:5::1;;;;;;6442:9;6438:46;;;6472:9;6455:8;6464:4;6455:14;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1::0;;;;;6455:26:5::1;;;;;-1:-1:-1::0;;;;;6455:26:5::1;;;;;;6438:46;6528:9;:38;;6552:8;6561:4;6552:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;6552:14:5::1;6528:38;;;6540:9;6528:38;-1:-1:-1::0;;;;;6498:80:5::1;6509:4;6498:80;6515:11;6568:9;6498:80;;;;;;;:::i;:::-;;;;;;;;6179:406:::0;;;;:::o;350:20:1:-;;;-1:-1:-1;;;;;350:20:1;;:::o;10294:671:5:-;10369:20;;:::i;:::-;10392:15;10403:3;10392:10;:15::i;:::-;10417:21;10441:13;;;:8;:13;;;;;;;;-1:-1:-1;;;;;10441:17:5;;;;;;;;;10502:11;;10369:38;;-1:-1:-1;10441:17:5;10502:23;;10518:6;10502:15;:23::i;:::-;10488:37;;10591:21;;10553:84;;2843:4;;10580:33;;:6;;-1:-1:-1;;;;;10580:33:5;:10;:33::i;:::-;:55;;;;;10553:15;;;;;10580:55;;10553:19;:84::i;:::-;10535:4;:15;;:102;;;;10672:19;10694:8;10703:3;10694:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10694:13:5;;-1:-1:-1;10721:32:5;;10717:115;;10809:11;;10769:52;;-1:-1:-1;;;10769:52:5;;-1:-1:-1;;;;;10769:23:5;;;;;:52;;10793:3;;10798:2;;;;10806:1;;10809:11;10769:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10717:115;10842:64;10872:10;10892:4;10899:6;10842:7;10850:3;10842:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10842:12:5;;:64;;:29;:64::i;:::-;10955:2;-1:-1:-1;;;;;10922:36:5;10942:3;10930:10;-1:-1:-1;;;;;10922:36:5;;10947:6;10922:36;;;;;;:::i;2530:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5266:529::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5430:15:5::1;::::0;5390:12:::1;::::0;5430:31:::1;::::0;5450:10;5430:19:::1;:31::i;:::-;5412:15;:49:::0;5471:7:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;5471:22:5;;::::1;-1:-1:-1::0;;;;;;5471:22:5;;::::1;;::::0;;;5503:8:::1;:24:::0;;;;::::1;::::0;;-1:-1:-1;5503:24:5;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;5552:149:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;5471:22:5::1;5552:149:::0;::::1;5635:22;:15:::0;:20:::1;:22::i;:::-;-1:-1:-1::0;;;;;5552:149:5::1;;;;;5587:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;5552:149:5;;::::1;::::0;;;5538:164;;::::1;::::0;;::::1;::::0;;-1:-1:-1;5538:164:5;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;5538:164:5::1;-1:-1:-1::0;;;;;5538:164:5;;;::::1;-1:-1:-1::0;;;5538:164:5::1;-1:-1:-1::0;;;;;;;;;5538:164:5;;::::1;-1:-1:-1::0;;;;;;5538:164:5;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;5733:7:::1;:14:::0;-1:-1:-1;;;;;5717:71:5;;::::1;::::0;;;::::1;::::0;5733:21:::1;::::0;:18:::1;:21::i;:::-;5717:71;5756:10;5717:71;;;;;;:::i;:::-;;;;;;;;1799:1:1;5266:529:5::0;;;:::o;2442:27::-;;;;;;;;;;13074:982;13160:20;;:::i;:::-;13183:15;13194:3;13183:10;:15::i;:::-;13208:21;13232:13;;;:8;:13;;;;;;;;13246:10;13232:25;;;;;;;13316:21;;13300:11;;13160:38;;-1:-1:-1;13232:25:5;;2843:4;;13300:38;;:11;-1:-1:-1;;;;;13300:38:5;:15;:38::i;:::-;:60;;;;;;13267:94;;13371:21;13395:49;:37;13416:4;:15;;;13395:16;:20;;:37;;;;:::i;:49::-;13371:73;;13492:85;2843:4;13520:33;13531:4;:21;;;-1:-1:-1;;;;;13520:33:5;:6;:10;;:33;;;;:::i;:::-;:55;;;;;13492:16;;13520:55;;13492:20;:85::i;:::-;13474:15;;;:103;13601:11;;:23;;13617:6;13601:15;:23::i;:::-;13587:37;;13667;-1:-1:-1;;;;;13667:5:5;:18;13686:2;13690:13;13667:18;:37::i;:::-;13715:19;13737:8;13746:3;13737:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13737:13:5;;-1:-1:-1;13764:32:5;;13760:135;;13872:11;;13812:72;;-1:-1:-1;;;13812:72:5;;-1:-1:-1;;;;;13812:23:5;;;;;:72;;13836:3;;13841:10;;13853:2;;13857:13;;13872:11;13812:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13760:135;13905:37;13931:2;13935:6;13905:7;13913:3;13905:12;;;;;;;:37;13992:2;-1:-1:-1;;;;;13958:37:5;13979:3;13967:10;-1:-1:-1;;;;;13958:37:5;;13984:6;13958:37;;;;;;:::i;:::-;;;;;;;;14030:3;14018:10;-1:-1:-1;;;;;14010:39:5;;14035:13;14010:39;;;;;;:::i;:::-;;;;;;;;13074:982;;;;;;;;:::o;1260:554:0:-;1343:23;;1451:5;-1:-1:-1;;;;;1440:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1440:24:0;-1:-1:-1;1428:36:0;-1:-1:-1;1497:5:0;-1:-1:-1;;;;;1485:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:35;;1526:9;1521:286;1541:16;;;1521:286;;;1580:12;1594:19;1625:4;1644:5;;1650:1;1644:8;;;;;;;;;;;;;;;;;;:::i;:::-;1617:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:74;;;;1676:7;:24;;;;1688:12;1687:13;1676:24;1702:21;1716:6;1702:13;:21::i;:::-;1668:56;;;;;-1:-1:-1;;;1668:56:0;;;;;;;;:::i;:::-;;1754:7;1739:9;1749:1;1739:12;;;;;;;;;;;;;:22;;;;;;;;;;;1789:6;1776:7;1784:1;1776:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;1559:3:0;;1521:286;;;;1260:554;;;;;;:::o;397:27:1:-;;;-1:-1:-1;;;;;397:27:1;;:::o;1962:29:5:-;;;:::o;1876:40::-;;;:::o;470:137:4:-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;-1:-1:-1;;;540:65:4;;;;;;;:::i;:::-;470:137;;;;:::o;1895:213:9:-;1951:6;1980:5;;;2004:6;;;;;;:16;;;2019:1;2014;:6;;2004:16;2003:38;;;;2030:1;2026;:5;:14;;;;;2039:1;2035;:5;2026:14;1995:87;;;;-1:-1:-1;;;1995:87:9;;;;;;;:::i;:::-;2100:1;1895:213;-1:-1:-1;;;1895:213:9:o;342:122:4:-;425:5;;;420:16;;;;412:50;;;;-1:-1:-1;;;412:50:4;;;;;;;:::i;951:304:3:-;1036:12;1050:17;1079:5;-1:-1:-1;;;;;1071:19:3;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1149:98;;;;-1:-1:-1;;;1149:98:3;;;;;;;:::i;:::-;951:304;;;;;:::o;2557:135:9:-;2609:7;2641:1;2636;:6;;2628:30;;;;-1:-1:-1;;;2628:30:9;;;;;;;:::i;:::-;-1:-1:-1;2683:1:9;2557:135::o;1263:332:3:-;1366:12;1380:17;1409:5;-1:-1:-1;;;;;1401:19:3;1444:10;1456:4;1462:2;1466:6;1421:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1421:52:3;;;;;;;;;;;1401:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:109;;;;1493:7;:57;;;;-1:-1:-1;1505:11:3;;:16;;:44;;;1536:4;1525:24;;;;;;;;;;;;:::i;:::-;1485:102;;;;-1:-1:-1;;;1485:102:3;;;;;;;:::i;:::-;1263:332;;;;;;:::o;613:161:4:-;662:9;-1:-1:-1;;;;;692:16:4;;;684:57;;;;-1:-1:-1;;;684:57:4;;;;;;;:::i;1134:125::-;1217:5;;;-1:-1:-1;;;;;1212:16:4;;;;;;;;1204:53;;;;-1:-1:-1;;;1204:53:4;;;;;;;:::i;780:156::-;828:8;-1:-1:-1;;;;;857:15:4;;;849:55;;;;-1:-1:-1;;;849:55:4;;;;;;;:::i;211:125::-;294:5;;;289:16;;;;281:53;;;;-1:-1:-1;;;281:53:4;;;;;;;:::i;2341:210:9:-;2397:6;2426:5;;;2450:6;;;;;;:16;;;2465:1;2460;:6;;2450:16;2449:38;;;;2476:1;2472;:5;:14;;;;;2485:1;2481;:5;2472:14;2441:84;;;;-1:-1:-1;;;2441:84:9;;;;;;;:::i;304:496:0:-;376:13;539:2;518:11;:18;:23;514:67;;;-1:-1:-1;543:38:0;;;;;;;;;;;;;;;;;;;514:67;685:4;672:11;668:22;653:37;;729:11;718:33;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:363::-;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;-1:-1;337:20;;-1:-1;;;;;366:30;;363:2;;;-1:-1;;399:12;363:2;443:4;435:6;431:17;419:29;;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;511:1;;501:12;454:2;259:262;;;;;:::o;3758:479::-;;;;3890:2;3878:9;3869:7;3865:23;3861:32;3858:2;;;-1:-1;;3896:12;3858:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3948:63;-1:-1;4048:2;4084:22;;971:20;996:30;971:20;996:30;:::i;:::-;4056:60;-1:-1;4153:2;4189:22;;971:20;996:30;971:20;996:30;:::i;:::-;4161:60;;;;3852:385;;;;;:::o;4244:538::-;;;;4408:2;4396:9;4387:7;4383:23;4379:32;4376:2;;;-1:-1;;4414:12;4376:2;4472:17;4459:31;-1:-1;;;;;4502:6;4499:30;4496:2;;;-1:-1;;4532:12;4496:2;4570:91;4653:7;4644:6;4633:9;4629:22;4570:91;:::i;:::-;4552:109;;-1:-1;4552:109;-1:-1;;4698:2;4734:22;;971:20;996:30;971:20;996:30;:::i;4789:397::-;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;-1:-1;;4934:12;4896:2;4992:17;4979:31;-1:-1;;;;;5022:6;5019:30;5016:2;;;-1:-1;;5052:12;5016:2;5090:80;5162:7;5153:6;5142:9;5138:22;5090:80;:::i;:::-;5072:98;;;;-1:-1;4890:296;-1:-1;;;;4890:296::o;5193:257::-;;5305:2;5293:9;5284:7;5280:23;5276:32;5273:2;;;-1:-1;;5311:12;5273:2;1119:6;1113:13;1131:30;1155:5;1131:30;:::i;5457:269::-;;5575:2;5563:9;5554:7;5550:23;5546:32;5543:2;;;-1:-1;;5581:12;5543:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;5733:291::-;;5862:2;5850:9;5841:7;5837:23;5833:32;5830:2;;;-1:-1;;5868:12;5830:2;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;6031:1145::-;;;;;;;;;6266:3;6254:9;6245:7;6241:23;6237:33;6234:2;;;-1:-1;;6273:12;6234:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;:::-;6325:77;-1:-1;6439:2;6478:22;;72:20;97:33;72:20;97:33;:::i;:::-;6447:63;-1:-1;6547:2;6586:22;;72:20;97:33;72:20;97:33;:::i;:::-;6555:63;-1:-1;6655:2;6694:22;;3414:20;;-1:-1;6763:3;6803:22;;3414:20;;-1:-1;6872:3;6910:22;;3690:20;44255:4;44244:16;;47641:33;;47631:2;;-1:-1;;47678:12;47631:2;6228:948;;;;-1:-1;6228:948;;;;;;6881:61;;-1:-1;;;6979:3;7019:22;;1240:20;;7088:3;7128:22;1240:20;;6228:948::o;7473:362::-;;7598:2;7586:9;7577:7;7573:23;7569:32;7566:2;;;-1:-1;;7604:12;7566:2;7655:17;7649:24;-1:-1;;;;;7693:18;7685:6;7682:30;7679:2;;;-1:-1;;7715:12;7679:2;7802:6;7791:9;7787:22;;;2110:3;2103:4;2095:6;2091:17;2087:27;2077:2;;-1:-1;;2118:12;2077:2;2158:6;2152:13;7693:18;40892:6;40889:30;40886:2;;;-1:-1;;40922:12;40886:2;2180:65;40995:9;40976:17;;-1:-1;;40972:33;7598:2;41053:15;2180:65;:::i;:::-;2171:74;;2265:6;2258:5;2251:21;2369:3;7598:2;2360:6;2293;2351:16;;2348:25;2345:2;;;-1:-1;;2376:12;2345:2;2396:39;2428:6;7598:2;2327:5;2323:16;7598:2;2293:6;2289:17;2396:39;:::i;:::-;-1:-1;7735:84;7560:275;-1:-1;;;;7560:275::o;7842:316::-;;7983:3;7971:9;7962:7;7958:23;7954:33;7951:2;;;-1:-1;;7990:12;7951:2;2645:20;7983:3;2645:20;:::i;:::-;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;:::-;2750:74;2732:16;2725:100;;2892:2;2961:9;2957:22;3562:13;2892:2;2911:5;2907:16;2900:86;3058:2;3127:9;3123:22;3562:13;3058:2;3077:5;3073:16;3066:86;3225:2;3294:9;3290:22;3562:13;3225:2;3244:5;3240:16;3233:86;8042:100;;;;7945:213;;;;:::o;8165:241::-;;8269:2;8257:9;8248:7;8244:23;8240:32;8237:2;;;-1:-1;;8275:12;8237:2;-1:-1;3414:20;;8231:175;-1:-1;8231:175::o;8413:263::-;;8528:2;8516:9;8507:7;8503:23;8499:32;8496:2;;;-1:-1;;8534:12;8496:2;-1:-1;3562:13;;8490:186;-1:-1;8490:186::o;8683:366::-;;;8804:2;8792:9;8783:7;8779:23;8775:32;8772:2;;;-1:-1;;8810:12;8772:2;3427:6;3414:20;8862:63;;8962:2;9005:9;9001:22;72:20;97:33;124:5;97:33;:::i;:::-;8970:63;;;;8766:283;;;;;:::o;9056:555::-;;;;9226:2;9214:9;9205:7;9201:23;9197:32;9194:2;;;-1:-1;;9232:12;9194:2;3427:6;3414:20;9284:63;;9384:2;9441:9;9437:22;1391:20;1416:47;1457:5;1416:47;:::i;:::-;9392:77;-1:-1;9506:2;9563:22;;1908:20;1933:51;1908:20;1933:51;:::i;9618:491::-;;;;9756:2;9744:9;9735:7;9731:23;9727:32;9724:2;;;-1:-1;;9762:12;9724:2;3427:6;3414:20;9814:63;;9914:2;9957:9;9953:22;3414:20;9922:63;;10022:2;10065:9;10061:22;72:20;97:33;124:5;97:33;:::i;10116:647::-;;;;;10286:3;10274:9;10265:7;10261:23;10257:33;10254:2;;;-1:-1;;10293:12;10254:2;3427:6;3414:20;10345:63;;10445:2;10488:9;10484:22;3414:20;10453:63;;10553:2;10614:9;10610:22;1908:20;1933:51;1978:5;1933:51;:::i;:::-;10561:81;-1:-1;10679:2;10715:22;;971:20;996:30;971:20;996:30;:::i;:::-;10248:515;;;;-1:-1;10248:515;;-1:-1;;10248:515::o;13734:323::-;;13866:5;41507:12;42322:6;42317:3;42310:19;13949:52;13994:6;42359:4;42354:3;42350:14;42359:4;13975:5;13971:16;13949:52;:::i;:::-;40995:9;46579:14;-1:-1;;46575:28;14013:39;;;;42359:4;14013:39;;13814:243;-1:-1;;13814:243::o;22821:291::-;;46162:6;46157:3;46152;46139:30;46200:16;;46193:27;;;46200:16;22965:147;-1:-1;22965:147::o;23119:271::-;;14224:5;41507:12;14335:52;14380:6;14375:3;14368:4;14361:5;14357:16;14335:52;:::i;:::-;14399:16;;;;;23253:137;-1:-1;;23253:137::o;23397:222::-;-1:-1;;;;;43936:54;;;;11358:37;;23524:2;23509:18;;23495:124::o;23871:444::-;-1:-1;;;;;43936:54;;;11358:37;;43936:54;;;;24218:2;24203:18;;11358:37;24301:2;24286:18;;13344:37;;;;24054:2;24039:18;;24025:290::o;24322:884::-;-1:-1;;;;;43936:54;;;11358:37;;43936:54;;;;24778:2;24763:18;;11358:37;24861:2;24846:18;;13344:37;;;;24944:2;24929:18;;13344:37;;;;44255:4;44244:16;25023:3;25008:19;;22774:35;43947:42;25092:19;;13344:37;25191:3;25176:19;;13344:37;;;;24613:3;24598:19;;24584:622::o;25213:333::-;-1:-1;;;;;43936:54;;;;11358:37;;25532:2;25517:18;;13344:37;25368:2;25353:18;;25339:207::o;25553:653::-;25820:2;25834:47;;;41507:12;;25805:18;;;42310:19;;;25553:653;;42359:4;;42350:14;;;;41197;;;25553:653;11825:251;11850:6;11847:1;11844:13;11825:251;;;11911:13;;43224;43217:21;13116:34;;10912:14;;;;42044;;;;11872:1;11865:9;11825:251;;;11829:14;;;26045:9;26039:4;26035:20;42359:4;26019:9;26015:18;26008:48;26070:126;12353:5;41507:12;12372:95;12460:6;12455:3;12372:95;:::i;:::-;12365:102;;;;;42359:4;12524:6;12520:17;12515:3;12511:27;42359:4;12618:5;41197:14;-1:-1;12657:357;12682:6;12679:1;12676:13;12657:357;;;12744:9;12738:4;12734:20;12729:3;12722:33;11060:64;11120:3;12789:6;12783:13;11060:64;:::i;:::-;12993:14;;;;12803:90;-1:-1;42044:14;;;;11872:1;12697:9;12657:357;;;-1:-1;26062:134;;25791:415;-1:-1;;;;;;;;;25791:415::o;27275:310::-;;27422:2;27443:17;27436:47;27497:78;27422:2;27411:9;27407:18;27561:6;27497:78;:::i;27592:416::-;27792:2;27806:47;;;15950:2;27777:18;;;42310:19;-1:-1;;;42350:14;;;15966:44;16029:12;;;27763:245::o;28015:416::-;28215:2;28229:47;;;16280:2;28200:18;;;42310:19;-1:-1;;;42350:14;;;16296:34;16349:12;;;28186:245::o;28438:416::-;28638:2;28652:47;;;16600:2;28623:18;;;42310:19;16636:34;42350:14;;;16616:55;-1:-1;;;16691:12;;;16684:27;16730:12;;;28609:245::o;28861:416::-;29061:2;29075:47;;;16981:2;29046:18;;;42310:19;17017:30;42350:14;;;16997:51;17067:12;;;29032:245::o;29284:416::-;29484:2;29498:47;;;17318:2;29469:18;;;42310:19;17354:34;42350:14;;;17334:55;-1:-1;;;17409:12;;;17402:25;17446:12;;;29455:245::o;29707:416::-;29907:2;29921:47;;;17697:2;29892:18;;;42310:19;-1:-1;;;42350:14;;;17713:44;17776:12;;;29878:245::o;30130:416::-;30330:2;30344:47;;;18027:2;30315:18;;;42310:19;18063:34;42350:14;;;18043:55;-1:-1;;;18118:12;;;18111:33;18163:12;;;30301:245::o;30553:416::-;30753:2;30767:47;;;18414:2;30738:18;;;42310:19;18450:30;42350:14;;;18430:51;18500:12;;;30724:245::o;30976:416::-;31176:2;31190:47;;;18751:2;31161:18;;;42310:19;18787:26;42350:14;;;18767:47;18833:12;;;31147:245::o;31399:416::-;31599:2;31613:47;;;31584:18;;;42310:19;19120:34;42350:14;;;19100:55;19174:12;;;31570:245::o;31822:416::-;32022:2;32036:47;;;32007:18;;;42310:19;19461:34;42350:14;;;19441:55;19515:12;;;31993:245::o;32245:416::-;32445:2;32459:47;;;19766:2;32430:18;;;42310:19;19802:29;42350:14;;;19782:50;19851:12;;;32416:245::o;32668:416::-;32868:2;32882:47;;;20102:2;32853:18;;;42310:19;20138:31;42350:14;;;20118:52;20189:12;;;32839:245::o;33091:416::-;33291:2;33305:47;;;20440:2;33276:18;;;42310:19;20476:34;42350:14;;;20456:55;-1:-1;;;20531:12;;;20524:28;20571:12;;;33262:245::o;33514:416::-;33714:2;33728:47;;;33699:18;;;42310:19;20858:34;42350:14;;;20838:55;20912:12;;;33685:245::o;33937:416::-;34137:2;34151:47;;;21163:2;34122:18;;;42310:19;21199:26;42350:14;;;21179:47;21245:12;;;34108:245::o;34360:322::-;21559:23;;-1:-1;;;;;43816:46;22061:37;;21741:4;21730:16;;;21724:23;-1:-1;;;;;44142:30;;;21799:14;;;22542:36;;;;21899:4;21888:16;;;21882:23;44142:30;21957:14;;;22542:36;;;;34537:2;34522:18;;34508:174::o;34689:436::-;-1:-1;;;;;43816:46;;;;22061:37;;-1:-1;;;;;44142:30;;;35030:2;35015:18;;22542:36;44142:30;35111:2;35096:18;;22542:36;34868:2;34853:18;;34839:286::o;35132:222::-;13344:37;;;35259:2;35244:18;;35230:124::o;35361:716::-;13344:37;;;-1:-1;;;;;43936:54;;;35797:2;35782:18;;11217:58;43936:54;;;;35880:2;35865:18;;11358:37;35971:2;35956:18;;15301:58;;;;36062:3;36047:19;;15301:58;35624:3;35609:19;;35595:482::o;38173:321::-;13344:37;;;43224:13;43217:21;38480:2;38465:18;;13116:34;38322:2;38307:18;;38293:201::o;38501:329::-;13344:37;;;38816:2;38801:18;;13344:37;38654:2;38639:18;;38625:205::o;39533:440::-;-1:-1;;;;;44142:30;;;;22542:36;;39876:2;39861:18;;13344:37;;;;-1:-1;;;;;43816:46;39959:2;39944:18;;22301:50;39714:2;39699:18;;39685:288::o;39980:506::-;;;40115:11;40102:25;40166:48;;40190:8;40174:14;40170:29;40166:48;40146:18;40142:73;40132:2;;-1:-1;;40219:12;40132:2;40246:33;;40300:18;;;-1:-1;;;;;;40327:30;;40324:2;;;-1:-1;;40360:12;40324:2;40205:4;40388:13;;-1:-1;40174:14;40420:38;;;40410:49;;40407:2;;;40472:1;;40462:12;40493:256;40555:2;40549:9;40581:17;;;-1:-1;;;;;40641:34;;40677:22;;;40638:62;40635:2;;;40713:1;;40703:12;40635:2;40555;40722:22;40533:216;;-1:-1;40533:216::o;46235:268::-;46300:1;46307:101;46321:6;46318:1;46315:13;46307:101;;;46388:11;;;46382:18;46369:11;;;46362:39;46343:2;46336:10;46307:101;;;46423:6;46420:1;46417:13;46414:2;;;-1:-1;;46300:1;46470:16;;46463:27;46284:219::o;46616:117::-;-1:-1;;;;;43936:54;;46675:35;;46665:2;;46724:1;;46714:12;46665:2;46659:74;:::o;46740:111::-;46821:5;43224:13;43217:21;46799:5;46796:32;46786:2;;46842:1;;46832:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2475800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "MASTER_CHEF()": "infinite",
                "MASTER_PID()": "infinite",
                "PICHI()": "infinite",
                "add(uint256,address,address)": "infinite",
                "batch(bytes[],bool)": "infinite",
                "claimOwnership()": "45067",
                "deposit(uint256,uint256,address)": "infinite",
                "emergencyWithdraw(uint256,address)": "infinite",
                "harvest(uint256,address)": "infinite",
                "harvestFromMasterChef()": "infinite",
                "init(address)": "infinite",
                "lpToken(uint256)": "2106",
                "massUpdatePools(uint256[])": "infinite",
                "migrate(uint256)": "infinite",
                "migrator()": "1182",
                "owner()": "1159",
                "pendingOwner()": "1136",
                "pendingPichi(uint256,address)": "infinite",
                "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "pichiPerBlock()": "infinite",
                "poolInfo(uint256)": "2233",
                "poolLength()": "1097",
                "rewarder(uint256)": "2127",
                "set(uint256,uint256,address,bool)": "infinite",
                "setMigrator(address)": "22073",
                "totalAllocPoint()": "1118",
                "transferOwnership(address,bool,bool)": "infinite",
                "updatePool(uint256)": "infinite",
                "userInfo(uint256,address)": "2227",
                "withdraw(uint256,uint256,address)": "infinite",
                "withdrawAndHarvest(uint256,uint256,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "MASTER_CHEF()": "edd8b170",
              "MASTER_PID()": "61621aaa",
              "PICHI()": "e7d77cba",
              "add(uint256,address,address)": "ab7de098",
              "batch(bytes[],bool)": "d2423b51",
              "claimOwnership()": "4e71e0c8",
              "deposit(uint256,uint256,address)": "8dbdbe6d",
              "emergencyWithdraw(uint256,address)": "2f940c70",
              "harvest(uint256,address)": "18fccc76",
              "harvestFromMasterChef()": "4f70b15a",
              "init(address)": "19ab453c",
              "lpToken(uint256)": "78ed5d1f",
              "massUpdatePools(uint256[])": "57a5b58c",
              "migrate(uint256)": "454b0608",
              "migrator()": "7cd07e47",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "pendingPichi(uint256,address)": "86f227f5",
              "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "7c516e94",
              "pichiPerBlock()": "0a016189",
              "poolInfo(uint256)": "1526fe27",
              "poolLength()": "081e3eda",
              "rewarder(uint256)": "c346253d",
              "set(uint256,uint256,address,bool)": "88bba42f",
              "setMigrator(address)": "23cf3118",
              "totalAllocPoint()": "17caf6f1",
              "transferOwnership(address,bool,bool)": "078dfbe7",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b",
              "withdraw(uint256,uint256,address)": "0ad58d2f",
              "withdrawAndHarvest(uint256,uint256,address)": "d1abb907"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMasterChef\",\"name\":\"_MASTER_CHEF\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_pichi\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_MASTER_PID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Harvest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"LogInit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"}],\"name\":\"LogPoolAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"LogSetPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accPichiPerShare\",\"type\":\"uint256\"}],\"name\":\"LogUpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MASTER_CHEF\",\"outputs\":[{\"internalType\":\"contract IMasterChef\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MASTER_PID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PICHI\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"successes\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"harvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"harvestFromMasterChef\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"dummyToken\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lpToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingPichi\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"permitToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pichiPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accPichiPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rewarder\",\"outputs\":[{\"internalType\":\"contract IRewarder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"_migrator\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accPichiPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct MasterChefV2.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"rewardDebt\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAndHarvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The (older) MasterChef contract gives out a constant number of PICHI tokens per block. It is the only address with minting rights for PICHI. The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token that is deposited into the MasterChef V1 (MCV1) contract. The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\",\"kind\":\"dev\",\"methods\":{\"add(uint256,address,address)\":{\"details\":\"Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.\",\"params\":{\"_lpToken\":\"Address of the LP ERC-20 token.\",\"_rewarder\":\"Address of the rewarder delegate.\",\"allocPoint\":\"AP of the new pool.\"}},\"constructor\":{\"params\":{\"_MASTER_CHEF\":\"The PolyCityDex MCV1 contract address.\",\"_MASTER_PID\":\"The pool ID of the dummy token on the base MCV1 contract.\",\"_pichi\":\"The PICHI token contract address.\"}},\"deposit(uint256,uint256,address)\":{\"details\":\"Deposit LP tokens to MCV2 for PICHI allocation.\",\"params\":{\"amount\":\"LP token amount to deposit.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"The receiver of `amount` deposit benefit.\"}},\"emergencyWithdraw(uint256,address)\":{\"details\":\"Withdraw without caring about rewards. EMERGENCY ONLY.\",\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"harvest(uint256,address)\":{\"details\":\"Harvest proceeds for transaction sender to `to`.\",\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of PICHI rewards.\"}},\"harvestFromMasterChef()\":{\"details\":\"Harvests PICHI from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to this MCV2 contract.\"},\"init(address)\":{\"details\":\"Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting rights for PICHI. Any balance of transaction sender in `dummyToken` is transferred. The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\",\"params\":{\"dummyToken\":\"The address of the ERC-20 token to deposit into MCV1.\"}},\"massUpdatePools(uint256[])\":{\"details\":\"Update reward variables for all pools. Be careful of gas spending!\",\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"migrate(uint256)\":{\"details\":\"Migrate LP token to another LP contract through the `migrator` contract.\",\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"pendingPichi(uint256,address)\":{\"details\":\"View function to see pending PICHI on frontend.\",\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"PICHI reward for a given user.\"}},\"pichiPerBlock()\":{\"details\":\"Calculates and returns the `amount` of PICHI per block.\"},\"poolLength()\":{\"details\":\"Returns the number of MCV2 pools.\"},\"set(uint256,uint256,address,bool)\":{\"details\":\"Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\",\"params\":{\"_allocPoint\":\"New AP of the pool.\",\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_rewarder\":\"Address of the rewarder delegate.\",\"overwrite\":\"True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\"}},\"setMigrator(address)\":{\"details\":\"Set the `migrator` contract. Can only be called by the owner.\",\"params\":{\"_migrator\":\"The contract address to set.\"}},\"updatePool(uint256)\":{\"details\":\"Update reward variables of the given pool.\",\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}},\"withdraw(uint256,uint256,address)\":{\"details\":\"Withdraw LP tokens from MCV2.\",\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"withdrawAndHarvest(uint256,uint256,address)\":{\"details\":\"Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\",\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens and PICHI rewards.\"}}},\"stateVariables\":{\"MASTER_CHEF\":{\"details\":\"Address of MCV1 contract.\"},\"MASTER_PID\":{\"details\":\"The index of MCV2 master pool in MCV1.\"},\"PICHI\":{\"details\":\"Address of PICHI contract.\"},\"lpToken\":{\"details\":\"Address of the LP token for each MCV2 pool.\"},\"poolInfo\":{\"details\":\"Info of each MCV2 pool.\"},\"rewarder\":{\"details\":\"Address of each `IRewarder` contract in MCV2.\"},\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"},\"userInfo\":{\"details\":\"Info of each user that stakes LP tokens.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MasterChefV2.sol\":\"MasterChefV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/MasterChefV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IMasterChef.sol\\\";\\n\\ninterface IMigratorChef {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\\n/// It is the only address with minting rights for PICHI.\\n/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the MasterChef V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract MasterChefV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @dev Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of PICHI entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @dev Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of PICHI to distribute per block.\\n    struct PoolInfo {\\n        uint128 accPichiPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @dev Address of MCV1 contract.\\n    IMasterChef public immutable MASTER_CHEF;\\n    /// @dev Address of PICHI contract.\\n    IERC20 public immutable PICHI;\\n    /// @dev The index of MCV2 master pool in MCV1.\\n    uint256 public immutable MASTER_PID;\\n    // @dev The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorChef public migrator;\\n\\n    /// @dev Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @dev Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @dev Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @dev Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 private constant MASTERCHEF_PICHI_PER_BLOCK = 1e20;\\n    uint256 private constant ACC_PICHI_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accPichiPerShare);\\n    event LogInit();\\n\\n    /// @param _MASTER_CHEF The PolyCityDex MCV1 contract address.\\n    /// @param _pichi The PICHI token contract address.\\n    /// @param _MASTER_PID The pool ID of the dummy token on the base MCV1 contract.\\n    constructor(IMasterChef _MASTER_CHEF, IERC20 _pichi, uint256 _MASTER_PID) public {\\n        MASTER_CHEF = _MASTER_CHEF;\\n        PICHI = _pichi;\\n        MASTER_PID = _MASTER_PID;\\n    }\\n\\n    /// @dev Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting rights for PICHI.\\n    /// Any balance of transaction sender in `dummyToken` is transferred.\\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\\n    function init(IERC20 dummyToken) external {\\n        uint256 balance = dummyToken.balanceOf(msg.sender);\\n        require(balance != 0, \\\"MasterChefV2: Balance must exceed 0\\\");\\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\\n        dummyToken.approve(address(MASTER_CHEF), balance);\\n        MASTER_CHEF.deposit(MASTER_PID, balance);\\n        emit LogInit();\\n    }\\n\\n    /// @dev Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accPichiPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @dev Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @dev Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"MasterChefV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"MasterChefV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @dev View function to see pending PICHI on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending PICHI reward for a given user.\\n    function pendingPichi(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accPichiPerShare = pool.accPichiPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accPichiPerShare) / ACC_PICHI_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @dev Calculates and returns the `amount` of PICHI per block.\\n    function pichiPerBlock() public view returns (uint256 amount) {\\n        amount = uint256(MASTERCHEF_PICHI_PER_BLOCK)\\n            .mul(MASTER_CHEF.poolInfo(MASTER_PID).allocPoint) / MASTER_CHEF.totalAllocPoint();\\n    }\\n\\n    /// @dev Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accPichiPerShare);\\n        }\\n    }\\n\\n    /// @dev Deposit LP tokens to MCV2 for PICHI allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n        \\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of PICHI rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi;\\n\\n        // Interactions\\n        if (_pendingPichi != 0) {\\n            PICHI.safeTransfer(to, _pendingPichi);\\n        }\\n        \\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward( pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n    \\n    /// @dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and PICHI rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n        \\n        // Interactions\\n        PICHI.safeTransfer(to, _pendingPichi);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n\\n    /// @dev Harvests PICHI from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to this MCV2 contract.\\n    function harvestFromMasterChef() public {\\n        MASTER_CHEF.deposit(MASTER_PID, 0);\\n    }\\n\\n    /// @dev Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xce80632a87f022eab3609a722ecb72d4f4da124f401d0a68607c28b74a763169\",\"license\":\"MIT\"},\"contracts/interfaces/IMasterChef.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IMasterChef {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount; // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken; // Address of LP token contract.\\n        uint256 allocPoint; // How many allocation points assigned to this pool. PICHI to distribute per block.\\n        uint256 lastRewardBlock; // Last block number that PICHI distribution occurs.\\n        uint256 accPichiPerShare; // Accumulated PICHI per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);\\n\\n    function totalAllocPoint() external view returns (uint256);\\n\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0x2ade0f4bcab4f5537b20ae75ba2099f507b6c620bb81427cf4e687fd057216e1\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 private constant _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\\n\",\"keccak256\":\"0x42b350cf39c1685e9a37835d6e6fb66e27362ccdf38a165f5030c2eb8bccc938\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 898,
                "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                "label": "migrator",
                "offset": 0,
                "slot": "2",
                "type": "t_contract(IMigratorChef)858"
              },
              {
                "astId": 902,
                "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                "label": "poolInfo",
                "offset": 0,
                "slot": "3",
                "type": "t_array(t_struct(PoolInfo)887_storage)dyn_storage"
              },
              {
                "astId": 906,
                "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                "label": "lpToken",
                "offset": 0,
                "slot": "4",
                "type": "t_array(t_contract(IERC20)337)dyn_storage"
              },
              {
                "astId": 910,
                "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                "label": "rewarder",
                "offset": 0,
                "slot": "5",
                "type": "t_array(t_contract(IRewarder)3320)dyn_storage"
              },
              {
                "astId": 917,
                "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                "label": "userInfo",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)880_storage))"
              },
              {
                "astId": 920,
                "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                "label": "totalAllocPoint",
                "offset": 0,
                "slot": "7",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_contract(IERC20)337)dyn_storage": {
                "base": "t_contract(IERC20)337",
                "encoding": "dynamic_array",
                "label": "contract IERC20[]",
                "numberOfBytes": "32"
              },
              "t_array(t_contract(IRewarder)3320)dyn_storage": {
                "base": "t_contract(IRewarder)3320",
                "encoding": "dynamic_array",
                "label": "contract IRewarder[]",
                "numberOfBytes": "32"
              },
              "t_array(t_struct(PoolInfo)887_storage)dyn_storage": {
                "base": "t_struct(PoolInfo)887_storage",
                "encoding": "dynamic_array",
                "label": "struct MasterChefV2.PoolInfo[]",
                "numberOfBytes": "32"
              },
              "t_contract(IERC20)337": {
                "encoding": "inplace",
                "label": "contract IERC20",
                "numberOfBytes": "20"
              },
              "t_contract(IMigratorChef)858": {
                "encoding": "inplace",
                "label": "contract IMigratorChef",
                "numberOfBytes": "20"
              },
              "t_contract(IRewarder)3320": {
                "encoding": "inplace",
                "label": "contract IRewarder",
                "numberOfBytes": "20"
              },
              "t_int256": {
                "encoding": "inplace",
                "label": "int256",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_struct(UserInfo)880_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct MasterChefV2.UserInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(UserInfo)880_storage"
              },
              "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)880_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_struct(UserInfo)880_storage)"
              },
              "t_struct(PoolInfo)887_storage": {
                "encoding": "inplace",
                "label": "struct MasterChefV2.PoolInfo",
                "members": [
                  {
                    "astId": 882,
                    "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                    "label": "accPichiPerShare",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 884,
                    "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                    "label": "lastRewardBlock",
                    "offset": 16,
                    "slot": "0",
                    "type": "t_uint64"
                  },
                  {
                    "astId": 886,
                    "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                    "label": "allocPoint",
                    "offset": 24,
                    "slot": "0",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(UserInfo)880_storage": {
                "encoding": "inplace",
                "label": "struct MasterChefV2.UserInfo",
                "members": [
                  {
                    "astId": 877,
                    "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                    "label": "amount",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 879,
                    "contract": "contracts/MasterChefV2.sol:MasterChefV2",
                    "label": "rewardDebt",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_int256"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/MiniChefV2.sol": {
        "IMigratorChef": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "migrate(address)": "ce5494bb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MiniChefV2.sol\":\"IMigratorChef\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/MiniChefV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IMasterChef.sol\\\";\\n\\ninterface IMigratorChef {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\\n/// It is the only address with minting rights for PICHI.\\n/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the MasterChef V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract MiniChefV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @dev Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of PICHI entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @dev Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of PICHI to distribute per block.\\n    struct PoolInfo {\\n        uint128 accPichiPerShare;\\n        uint64 lastRewardTime;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @dev Address of PICHI contract.\\n    IERC20 public immutable PICHI;\\n    // @dev The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorChef public migrator;\\n\\n    /// @dev Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @dev Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @dev Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @dev Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 public pichiPerSecond;\\n    uint256 private constant ACC_PICHI_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accPichiPerShare);\\n    event LogPichiPerSecond(uint256 pichiPerSecond);\\n\\n    /// @param _pichi The PICHI token contract address.\\n    constructor(IERC20 _pichi) public {\\n        PICHI = _pichi;\\n    }\\n\\n    /// @dev Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardTime: block.timestamp.to64(),\\n            accPichiPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @dev Sets the pichi per second to be distributed. Can only be called by the owner.\\n    /// @param _pichiPerSecond The amount of Pichi to be distributed per second.\\n    function setPichiPerSecond(uint256 _pichiPerSecond) public onlyOwner {\\n        pichiPerSecond = _pichiPerSecond;\\n        emit LogPichiPerSecond(_pichiPerSecond);\\n    }\\n\\n    /// @dev Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @dev Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"MasterChefV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"MasterChefV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @dev View function to see pending PICHI on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending PICHI reward for a given user.\\n    function pendingPichi(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accPichiPerShare = pool.accPichiPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n            uint256 pichiReward = time.mul(pichiPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accPichiPerShare) / ACC_PICHI_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @dev Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.timestamp > pool.lastRewardTime) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n                uint256 pichiReward = time.mul(pichiPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardTime = block.timestamp.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accPichiPerShare);\\n        }\\n    }\\n\\n    /// @dev Deposit LP tokens to MCV2 for PICHI allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n        \\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of PICHI rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi;\\n\\n        // Interactions\\n        if (_pendingPichi != 0) {\\n            PICHI.safeTransfer(to, _pendingPichi);\\n        }\\n        \\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward( pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n    \\n    /// @dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and PICHI rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n        \\n        // Interactions\\n        PICHI.safeTransfer(to, _pendingPichi);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n\\n    /// @dev Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xe120391e11a2c7784ec2c988a3af8cbd8c33d5738728987074dfc91dc521aed7\",\"license\":\"MIT\"},\"contracts/interfaces/IMasterChef.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IMasterChef {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount; // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken; // Address of LP token contract.\\n        uint256 allocPoint; // How many allocation points assigned to this pool. PICHI to distribute per block.\\n        uint256 lastRewardBlock; // Last block number that PICHI distribution occurs.\\n        uint256 accPichiPerShare; // Accumulated PICHI per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);\\n\\n    function totalAllocPoint() external view returns (uint256);\\n\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0x2ade0f4bcab4f5537b20ae75ba2099f507b6c620bb81427cf4e687fd057216e1\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 private constant _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\\n\",\"keccak256\":\"0x42b350cf39c1685e9a37835d6e6fb66e27362ccdf38a165f5030c2eb8bccc938\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "MiniChefV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_pichi",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "EmergencyWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Harvest",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "pichiPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "LogPichiPerSecond",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IERC20",
                  "name": "lpToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                }
              ],
              "name": "LogPoolAddition",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "LogSetPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accPichiPerShare",
                  "type": "uint256"
                }
              ],
              "name": "LogUpdatePool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "PICHI",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_lpToken",
                  "type": "address"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                }
              ],
              "name": "add",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "calls",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "revertOnFail",
                  "type": "bool"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "successes",
                  "type": "bool[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "emergencyWithdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "harvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "lpToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "migrator",
              "outputs": [
                {
                  "internalType": "contract IMigratorChef",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingPichi",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "permitToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pichiPerSecond",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accPichiPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "rewarder",
              "outputs": [
                {
                  "internalType": "contract IRewarder",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "set",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IMigratorChef",
                  "name": "_migrator",
                  "type": "address"
                }
              ],
              "name": "setMigrator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pichiPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "setPichiPerSecond",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAllocPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accPichiPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MiniChefV2.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "int256",
                  "name": "rewardDebt",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawAndHarvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "The (older) MasterChef contract gives out a constant number of PICHI tokens per block. It is the only address with minting rights for PICHI. The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token that is deposited into the MasterChef V1 (MCV1) contract. The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.",
            "kind": "dev",
            "methods": {
              "add(uint256,address,address)": {
                "details": "Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.",
                "params": {
                  "_lpToken": "Address of the LP ERC-20 token.",
                  "_rewarder": "Address of the rewarder delegate.",
                  "allocPoint": "AP of the new pool."
                }
              },
              "constructor": {
                "params": {
                  "_pichi": "The PICHI token contract address."
                }
              },
              "deposit(uint256,uint256,address)": {
                "details": "Deposit LP tokens to MCV2 for PICHI allocation.",
                "params": {
                  "amount": "LP token amount to deposit.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "The receiver of `amount` deposit benefit."
                }
              },
              "emergencyWithdraw(uint256,address)": {
                "details": "Withdraw without caring about rewards. EMERGENCY ONLY.",
                "params": {
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens."
                }
              },
              "harvest(uint256,address)": {
                "details": "Harvest proceeds for transaction sender to `to`.",
                "params": {
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of PICHI rewards."
                }
              },
              "massUpdatePools(uint256[])": {
                "details": "Update reward variables for all pools. Be careful of gas spending!",
                "params": {
                  "pids": "Pool IDs of all to be updated. Make sure to update all active pools."
                }
              },
              "migrate(uint256)": {
                "details": "Migrate LP token to another LP contract through the `migrator` contract.",
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`."
                }
              },
              "pendingPichi(uint256,address)": {
                "details": "View function to see pending PICHI on frontend.",
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_user": "Address of user."
                },
                "returns": {
                  "pending": "PICHI reward for a given user."
                }
              },
              "poolLength()": {
                "details": "Returns the number of MCV2 pools."
              },
              "set(uint256,uint256,address,bool)": {
                "details": "Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.",
                "params": {
                  "_allocPoint": "New AP of the pool.",
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_rewarder": "Address of the rewarder delegate.",
                  "overwrite": "True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                }
              },
              "setMigrator(address)": {
                "details": "Set the `migrator` contract. Can only be called by the owner.",
                "params": {
                  "_migrator": "The contract address to set."
                }
              },
              "setPichiPerSecond(uint256)": {
                "details": "Sets the pichi per second to be distributed. Can only be called by the owner.",
                "params": {
                  "_pichiPerSecond": "The amount of Pichi to be distributed per second."
                }
              },
              "updatePool(uint256)": {
                "details": "Update reward variables of the given pool.",
                "params": {
                  "pid": "The index of the pool. See `poolInfo`."
                },
                "returns": {
                  "pool": "Returns the pool that was updated."
                }
              },
              "withdraw(uint256,uint256,address)": {
                "details": "Withdraw LP tokens from MCV2.",
                "params": {
                  "amount": "LP token amount to withdraw.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens."
                }
              },
              "withdrawAndHarvest(uint256,uint256,address)": {
                "details": "Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.",
                "params": {
                  "amount": "LP token amount to withdraw.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens and PICHI rewards."
                }
              }
            },
            "stateVariables": {
              "PICHI": {
                "details": "Address of PICHI contract."
              },
              "lpToken": {
                "details": "Address of the LP token for each MCV2 pool."
              },
              "poolInfo": {
                "details": "Info of each MCV2 pool."
              },
              "rewarder": {
                "details": "Address of each `IRewarder` contract in MCV2."
              },
              "totalAllocPoint": {
                "details": "Total allocation points. Must be the sum of all allocation points in all pools."
              },
              "userInfo": {
                "details": "Info of each user that stakes LP tokens."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a06040523480156200001157600080fd5b5060405162002c3038038062002c30833981016040819052620000349162000089565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b031916608052620000b9565b6000602082840312156200009b578081fd5b81516001600160a01b0381168114620000b2578182fd5b9392505050565b60805160601c612b4f620000e1600039806108ff52806119f15280611cf75250612b4f6000f3fe6080604052600436106101b75760003560e01c806378ed5d1f116100ec57806393f1a40b1161008a578063d1abb90711610064578063d1abb907146104c9578063d2423b51146104e9578063e30c39781461050a578063e7d77cba1461051f576101b7565b806393f1a40b1461045b578063ab7de09814610489578063c346253d146104a9576101b7565b806386f227f5116100c657806386f227f5146103e657806388bba42f146104065780638da5cb5b146104265780638dbdbe6d1461043b576101b7565b806378ed5d1f146103845780637c516e94146103b15780637cd07e47146103d1576101b7565b806323cf3118116101595780634e71e0c8116101335780634e71e0c81461030d57806351eb05a61461032257806357a5b58c1461034f57806358b84f4d1461036f576101b7565b806323cf3118146102ad5780632f940c70146102cd578063454b0608146102ed576101b7565b80630ad58d2f116101955780630ad58d2f146102295780631526fe271461024957806317caf6f11461027857806318fccc761461028d576101b7565b8063033ce5c1146101bc578063078dfbe7146101de578063081e3eda146101fe575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046123c4565b610534565b005b3480156101ea57600080fd5b506101dc6101f936600461217d565b6105a7565b34801561020a57600080fd5b5061021361068d565b6040516102209190612a03565b60405180910390f35b34801561023557600080fd5b506101dc610244366004612459565b610693565b34801561025557600080fd5b506102696102643660046123c4565b610823565b604051610220939291906129d9565b34801561028457600080fd5b50610213610865565b34801561029957600080fd5b506101dc6102a83660046123f4565b61086b565b3480156102b957600080fd5b506101dc6102c836600461230e565b610a05565b3480156102d957600080fd5b506101dc6102e83660046123f4565b610a51565b3480156102f957600080fd5b506101dc6103083660046123c4565b610b72565b34801561031957600080fd5b506101dc610e1e565b34801561032e57600080fd5b5061034261033d3660046123c4565b610eab565b60405161022091906129a0565b34801561035b57600080fd5b506101dc61036a366004612210565b611135565b34801561037b57600080fd5b5061021361116b565b34801561039057600080fd5b506103a461039f3660046123c4565b611171565b6040516102209190612527565b3480156103bd57600080fd5b506101dc6103cc366004612287565b611198565b3480156103dd57600080fd5b506103a461120c565b3480156103f257600080fd5b506102136104013660046123f4565b61121b565b34801561041257600080fd5b506101dc610421366004612486565b611415565b34801561043257600080fd5b506103a4611582565b34801561044757600080fd5b506101dc610456366004612459565b611591565b34801561046757600080fd5b5061047b6104763660046123f4565b61171c565b604051610220929190612a4b565b34801561049557600080fd5b506101dc6104a4366004612423565b611740565b3480156104b557600080fd5b506103a46104c43660046123c4565b611916565b3480156104d557600080fd5b506101dc6104e4366004612459565b611923565b6104fc6104f73660046121c7565b611b56565b6040516102209291906125b9565b34801561051657600080fd5b506103a4611ce6565b34801561052b57600080fd5b506103a4611cf5565b6000546001600160a01b031633146105675760405162461bcd60e51b815260040161055e90612818565b60405180910390fd5b60088190556040517fb2c52d2a36d4454ed77f8f367b8f8112a034172ff2227ea1544ed8b99b1432049061059c908390612a03565b60405180910390a150565b6000546001600160a01b031633146105d15760405162461bcd60e51b815260040161055e90612818565b811561066c576001600160a01b0383161515806105eb5750805b6106075760405162461bcd60e51b815260040161055e90612732565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610688565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b61069b612115565b6106a484610eab565b600085815260066020908152604080832033845290915290208151919250906106f69064e8d4a51000906106e29087906001600160801b0316611d19565b816106e957fe5b6001840154919004611d56565b600182015580546107079085611da3565b815560058054600091908790811061071b57fe5b6000918252602090912001546001600160a01b0316905080156107a157815460405163569db41b60e11b81526001600160a01b0383169163ad3b68369161076e918a9133918a9160009190600401612a0c565b600060405180830381600087803b15801561078857600080fd5b505af115801561079c573d6000803e3d6000fd5b505050505b6107cf8486600489815481106107b357fe5b6000918252602090912001546001600160a01b03169190611dc6565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516108139190612a03565b60405180910390a4505050505050565b6003818154811061083057fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b610873612115565b61087c83610eab565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a51000916108b891906001600160801b0316611d19565b816108bf57fe5b04905060006108e36108de846001015484611d5690919063ffffffff16565b611eb4565b6001840183905590508015610926576109266001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b60006005878154811061093557fe5b6000918252602090912001546001600160a01b0316905080156109ba57835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691610987918b9133918c91899190600401612a0c565b600060405180830381600087803b1580156109a157600080fd5b505af11580156109b5573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516109f49190612a03565b60405180910390a350505050505050565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161055e90612818565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610a8857fe5b6000918252602090912001546001600160a01b031690508015610b0d5760405163569db41b60e11b81526001600160a01b0382169063ad3b683690610ada908890339089906000908190600401612a0c565b600060405180830381600087803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b505050505b610b1f8483600488815481106107b357fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610b639190612a03565b60405180910390a45050505050565b6002546001600160a01b0316610b9a5760405162461bcd60e51b815260040161055e906128b9565b600060048281548110610ba957fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610be4903090600401612527565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3491906123dc565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610c6992169085906004016125a0565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb919061224f565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb90610ced908690600401612527565b602060405180830381600087803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f919061226b565b6040516370a0823160e01b81529091506001600160a01b038216906370a0823190610d6e903090600401612527565b60206040518083038186803b158015610d8657600080fd5b505afa158015610d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbe91906123dc565b8214610ddc5760405162461bcd60e51b815260040161055e90612761565b8060048581548110610dea57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b0316338114610e495760405162461bcd60e51b815260040161055e9061284d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610eb3612115565b60038281548110610ec057fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915042111561113057600060048381548110610f2257fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610f5b903090600401612527565b60206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906123dc565b90508015611054576000610fd583602001516001600160401b031642611da390919063ffffffff16565b9050600060075461100885604001516001600160401b031661100260085486611d1990919063ffffffff16565b90611d19565b8161100f57fe5b049050611046611035846110288464e8d4a51000611d19565b8161102f57fe5b04611eda565b85516001600160801b031690611f03565b6001600160801b0316845250505b61105d42611f32565b6001600160401b03166020830152600380548391908590811061107c57fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926111269290918691612a59565b60405180910390a2505b919050565b8060005b818110156111655761115c84848381811061115057fe5b90506020020135610eab565b50600101611139565b50505050565b60085481565b6004818154811061117e57fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf906111d0908a908a908a908a908a908a908a9060040161255f565b600060405180830381600087803b1580156111ea57600080fd5b505af11580156111fe573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000611225612115565b6003848154811061123257fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b03891686529092529183208251600480549496509194921692889081106112b057fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906112e9903090600401612527565b60206040518083038186803b15801561130157600080fd5b505afa158015611315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133991906123dc565b905083602001516001600160401b03164211801561135657508015155b156113dc57600061137d85602001516001600160401b031642611da390919063ffffffff16565b905060006007546113aa87604001516001600160401b031661100260085486611d1990919063ffffffff16565b816113b157fe5b0490506113d7836113c78364e8d4a51000611d19565b816113ce57fe5b86919004611f5b565b935050505b6001830154835461140a916108de9164e8d4a51000906113fc9087611d19565b8161140357fe5b0490611d56565b979650505050505050565b6000546001600160a01b0316331461143f5760405162461bcd60e51b815260040161055e90612818565b61147e836114786003878154811061145357fe5b60009182526020909120015460075490600160c01b90046001600160401b0316611da3565b90611f5b565b60075561148a83611f32565b6003858154811061149757fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561150b5781600585815481106114dc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611537576005848154811061151d57fe5b6000918252602090912001546001600160a01b0316611539565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e18658584604051611574929190612a3b565b60405180910390a350505050565b6000546001600160a01b031681565b611599612115565b6115a284610eab565b60008581526006602090815260408083206001600160a01b038716845290915290208054919250906115d49085611f5b565b8155815161160b9064e8d4a51000906115f79087906001600160801b0316611d19565b816115fe57fe5b6001840154919004611f7e565b816001018190555060006005868154811061162257fe5b6000918252602090912001546001600160a01b0316905080156116a857815460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611675918a918991829160009190600401612a0c565b600060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050505b6116d833308760048a815481106116bb57fe5b6000918252602090912001546001600160a01b0316929190611fc4565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516108139190612a03565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b0316331461176a5760405162461bcd60e51b815260040161055e90612818565b6007546117779084611f5b565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038086166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090930180549285169290911691909117905560408051606081019091529081526003906020810161182442611f32565b6001600160401b0316815260200161183b86611f32565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b0380841692908516916118da91611da3565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e5866040516119099190612a03565b60405180910390a4505050565b6005818154811061117e57fe5b61192b612115565b61193484610eab565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a510009161197091906001600160801b0316611d19565b8161197757fe5b04905060006119966108de846001015484611d5690919063ffffffff16565b90506119d164e8d4a510006119c186600001516001600160801b031689611d1990919063ffffffff16565b816119c857fe5b84919004611d56565b600184015582546119e29087611da3565b8355611a186001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b600060058881548110611a2757fe5b6000918252602090912001546001600160a01b031690508015611aac57835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611a79918c9133918c91899190600401612a0c565b600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b505050505b611abe868860048b815481106107b357fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611b029190612a03565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611b449190612a03565b60405180910390a35050505050505050565b606080836001600160401b0381118015611b6f57600080fd5b50604051908082528060200260200182016040528015611b99578160200160208202803683370190505b509150836001600160401b0381118015611bb257600080fd5b50604051908082528060200260200182016040528015611be657816020015b6060815260200190600190039081611bd15790505b50905060005b84811015611cdd576000606030888885818110611c0557fe5b9050602002810190611c179190612a83565b604051611c259291906124fb565b600060405180830381855af49150503d8060008114611c60576040519150601f19603f3d011682016040523d82523d6000602084013e611c65565b606091505b50915091508180611c74575085155b611c7d826120b5565b90611c9b5760405162461bcd60e51b815260040161055e9190612653565b5081858481518110611ca957fe5b60200260200101901515908115158152505080848481518110611cc857fe5b60209081029190910101525050600101611bec565b50935093915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000811580611d3457505080820282828281611d3157fe5b04145b611d505760405162461bcd60e51b815260040161055e90612969565b92915050565b6000818303818312801590611d6b5750838113155b80611d805750600083128015611d8057508381135b611d9c5760405162461bcd60e51b815260040161055e906128f0565b9392505050565b80820382811115611d505760405162461bcd60e51b815260040161055e90612666565b60006060846001600160a01b031663a9059cbb8585604051602401611dec9291906125a0565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611e25919061250b565b6000604051808303816000865af19150503d8060008114611e62576040519150601f19603f3d011682016040523d82523d6000602084013e611e67565b606091505b5091509150818015611e91575080511580611e91575080806020019051810190611e91919061224f565b611ead5760405162461bcd60e51b815260040161055e906126ba565b5050505050565b600080821215611ed65760405162461bcd60e51b815260040161055e90612695565b5090565b60006001600160801b03821115611ed65760405162461bcd60e51b815260040161055e906127aa565b8181016001600160801b038083169082161015611d505760405162461bcd60e51b815260040161055e906127e1565b60006001600160401b03821115611ed65760405162461bcd60e51b815260040161055e90612882565b81810181811015611d505760405162461bcd60e51b815260040161055e906127e1565b6000828201818312801590611f935750838112155b80611fa85750600083128015611fa857508381125b611d9c5760405162461bcd60e51b815260040161055e906126f1565b60006060856001600160a01b03166323b872dd868686604051602401611fec9392919061253b565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612025919061250b565b6000604051808303816000865af19150503d8060008114612062576040519150601f19603f3d011682016040523d82523d6000602084013e612067565b606091505b5091509150818015612091575080511580612091575080806020019051810190612091919061224f565b6120ad5760405162461bcd60e51b815260040161055e90612934565b505050505050565b60606044825110156120fb575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c790000006020820152611130565b60048201915081806020019051810190611d50919061232a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612146578182fd5b5081356001600160401b0381111561215c578182fd5b602083019150836020808302850101111561217657600080fd5b9250929050565b600080600060608486031215612191578283fd5b833561219c81612af3565b925060208401356121ac81612b0b565b915060408401356121bc81612b0b565b809150509250925092565b6000806000604084860312156121db578283fd5b83356001600160401b038111156121f0578384fd5b6121fc86828701612135565b90945092505060208401356121bc81612b0b565b60008060208385031215612222578182fd5b82356001600160401b03811115612237578283fd5b61224385828601612135565b90969095509350505050565b600060208284031215612260578081fd5b8151611d9c81612b0b565b60006020828403121561227c578081fd5b8151611d9c81612af3565b600080600080600080600080610100898b0312156122a3578384fd5b88356122ae81612af3565b975060208901356122be81612af3565b965060408901356122ce81612af3565b9550606089013594506080890135935060a089013560ff811681146122f1578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561231f578081fd5b8135611d9c81612af3565b60006020828403121561233b578081fd5b81516001600160401b0380821115612351578283fd5b818401915084601f830112612364578283fd5b815181811115612372578384fd5b604051601f8201601f191681016020018381118282101715612392578586fd5b6040528181528382016020018710156123a9578485fd5b6123ba826020830160208701612ac7565b9695505050505050565b6000602082840312156123d5578081fd5b5035919050565b6000602082840312156123ed578081fd5b5051919050565b60008060408385031215612406578182fd5b82359150602083013561241881612af3565b809150509250929050565b600080600060608486031215612437578081fd5b83359250602084013561244981612af3565b915060408401356121bc81612af3565b60008060006060848603121561246d578081fd5b833592506020840135915060408401356121bc81612af3565b6000806000806080858703121561249b578182fd5b843593506020850135925060408501356124b481612af3565b915060608501356124c481612b0b565b939692955090935050565b600081518084526124e7816020860160208601612ac7565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6000825161251d818460208701612ac7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156125f45781511515845292840192908401906001016125d6565b5050508381038285015280855161260b8184612a03565b91508192508381028201848801865b838110156126445785830385526126328383516124cf565b9487019492509086019060010161261a565b50909998505050505050505050565b600060208252611d9c60208301846124cf565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d6040820152680eae6e840dac2e8c6d60bb1b606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612a99578283fd5b8301803591506001600160401b03821115612ab2578283fd5b60200191503681900382131561217657600080fd5b60005b83811015612ae2578181015183820152602001612aca565b838111156111655750506000910152565b6001600160a01b0381168114612b0857600080fd5b50565b8015158114612b0857600080fdfea26469706673582212200e870d4617b95838b9c225c77a9807481015d616d4c96efba849a64bbe8c5b2564736f6c634300060c0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2C30 CODESIZE SUB DUP1 PUSH3 0x2C30 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x89 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH3 0xB9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xB2 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x2B4F PUSH3 0xE1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x8FF MSTORE DUP1 PUSH2 0x19F1 MSTORE DUP1 PUSH2 0x1CF7 MSTORE POP PUSH2 0x2B4F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B7 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78ED5D1F GT PUSH2 0xEC JUMPI DUP1 PUSH4 0x93F1A40B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xD1ABB907 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0xE7D77CBA EQ PUSH2 0x51F JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0xAB7DE098 EQ PUSH2 0x489 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x4A9 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x86F227F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x86F227F5 EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0x88BBA42F EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x43B JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x3D1 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 GT PUSH2 0x159 JUMPI DUP1 PUSH4 0x4E71E0C8 GT PUSH2 0x133 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0x58B84F4D EQ PUSH2 0x36F JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x2ED JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0xAD58D2F GT PUSH2 0x195 JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x28D JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x33CE5C1 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x1FE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x534 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x217D JUMP JUMPDEST PUSH2 0x5A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x68D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x269 PUSH2 0x264 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x865 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x86B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x230E JUMP JUMPDEST PUSH2 0xA05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0xA51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x308 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xB72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0xE1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x342 PUSH2 0x33D CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x29A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x2210 JUMP JUMPDEST PUSH2 0x1135 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x116B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x39F CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2287 JUMP JUMPDEST PUSH2 0x1198 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x120C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x121B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x421 CALLDATASIZE PUSH1 0x4 PUSH2 0x2486 JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x1582 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x456 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x1591 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47B PUSH2 0x476 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x171C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP3 SWAP2 SWAP1 PUSH2 0x2A4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x4A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2423 JUMP JUMPDEST PUSH2 0x1740 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x4C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x1916 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x1923 JUMP JUMPDEST PUSH2 0x4FC PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x21C7 JUMP JUMPDEST PUSH2 0x1B56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP3 SWAP2 SWAP1 PUSH2 0x25B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x1CE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x1CF5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x567 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB2C52D2A36D4454ED77F8F367B8F8112A034172FF2227EA1544ED8B99B143204 SWAP1 PUSH2 0x59C SWAP1 DUP4 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x66C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x5EB JUMPI POP DUP1 JUMPDEST PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2732 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x688 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x69B PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x6A4 DUP5 PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x6F6 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6E2 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x6E9 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE DUP1 SLOAD PUSH2 0x707 SWAP1 DUP6 PUSH2 0x1DA3 JUMP JUMPDEST DUP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x71B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x7A1 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x76E SWAP2 DUP11 SWAP2 CALLER SWAP2 DUP11 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x7CF DUP5 DUP7 PUSH1 0x4 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x7B3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x813 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x830 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x873 PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x87C DUP4 PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x8B8 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x8BF JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x8E3 PUSH2 0x8DE DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x1D56 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1EB4 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x926 JUMPI PUSH2 0x926 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x935 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x9BA JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x987 SWAP2 DUP12 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x9F4 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA2F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP1 DUP2 LT PUSH2 0xA88 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xB0D JUMPI PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAD3B6836 SWAP1 PUSH2 0xADA SWAP1 DUP9 SWAP1 CALLER SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xB1F DUP5 DUP4 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x7B3 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP6 PUSH1 0x40 MLOAD PUSH2 0xB63 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBA9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 POP DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xBE4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC34 SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xC69 SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x25A0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCBB SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCE5494BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xCE5494BB SWAP1 PUSH2 0xCED SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD3F SWAP2 SWAP1 PUSH2 0x226B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xD6E SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDBE SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST DUP3 EQ PUSH2 0xDDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2761 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xDEA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0xE49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x284D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xEB3 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xEC0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP1 DUP3 ADD MSTORE SWAP2 POP TIMESTAMP GT ISZERO PUSH2 0x1130 JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xF22 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xF5B SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFAB SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1054 JUMPI PUSH1 0x0 PUSH2 0xFD5 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0x1DA3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x1008 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1002 PUSH1 0x8 SLOAD DUP7 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x100F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1046 PUSH2 0x1035 DUP5 PUSH2 0x1028 DUP5 PUSH5 0xE8D4A51000 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x102F JUMPI INVALID JUMPDEST DIV PUSH2 0x1EDA JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x1F03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x105D TIMESTAMP PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x107C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD SWAP2 ADD DUP1 SLOAD DUP5 DUP5 ADD MLOAD PUSH1 0x40 SWAP6 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0x1126 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x2A59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1165 JUMPI PUSH2 0x115C DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1150 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xEAB JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1139 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x117E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x11D0 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x255F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1225 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x3 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1232 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP6 ADD MSTORE DUP9 DUP6 MSTORE PUSH1 0x6 DUP4 MSTORE DUP4 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP2 DUP4 KECCAK256 DUP3 MLOAD PUSH1 0x4 DUP1 SLOAD SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP3 AND SWAP3 DUP9 SWAP1 DUP2 LT PUSH2 0x12B0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x12E9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1315 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1339 SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x1356 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13DC JUMPI PUSH1 0x0 PUSH2 0x137D DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0x1DA3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x13AA DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1002 PUSH1 0x8 SLOAD DUP7 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x13B1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x13D7 DUP4 PUSH2 0x13C7 DUP4 PUSH5 0xE8D4A51000 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x13CE JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0x1F5B JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x140A SWAP2 PUSH2 0x8DE SWAP2 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x13FC SWAP1 DUP8 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1403 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1D56 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x143F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH2 0x147E DUP4 PUSH2 0x1478 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1453 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x7 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1DA3 JUMP JUMPDEST SWAP1 PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x148A DUP4 PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1497 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x150B JUMPI DUP2 PUSH1 0x5 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x14DC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x1537 JUMPI PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x151D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1539 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x95895A6AB1DF54420D241B55243258A33E61B2194DB66C1179EC521AAE8E1865 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1574 SWAP3 SWAP2 SWAP1 PUSH2 0x2A3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1599 PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x15A2 DUP5 PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x15D4 SWAP1 DUP6 PUSH2 0x1F5B JUMP JUMPDEST DUP2 SSTORE DUP2 MLOAD PUSH2 0x160B SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x15F7 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x15FE JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x1F7E JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1622 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x16A8 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x1675 SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP3 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x168F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x16D8 CALLER ADDRESS DUP8 PUSH1 0x4 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x16BB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x1FC4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x813 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x176A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x1777 SWAP1 DUP5 PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD SWAP1 SWAP3 SSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP5 ADD DUP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 PUSH1 0x20 DUP2 ADD PUSH2 0x1824 TIMESTAMP PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x183B DUP7 PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 DUP5 MLOAD SWAP3 ADD DUP1 SLOAD SWAP6 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD DUP5 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP6 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP3 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 PUSH2 0x18DA SWAP2 PUSH2 0x1DA3 JUMP JUMPDEST PUSH32 0x81EE0F8C5C46E2CB41984886F77A84181724ABB86C32A5F6DE539B07509D45E5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1909 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x117E JUMPI INVALID JUMPDEST PUSH2 0x192B PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x1934 DUP5 PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x1970 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1977 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x1996 PUSH2 0x8DE DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x1D56 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x19D1 PUSH5 0xE8D4A51000 PUSH2 0x19C1 DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x19C8 JUMPI INVALID JUMPDEST DUP5 SWAP2 SWAP1 DIV PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE DUP3 SLOAD PUSH2 0x19E2 SWAP1 DUP8 PUSH2 0x1DA3 JUMP JUMPDEST DUP4 SSTORE PUSH2 0x1A18 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x1A27 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x1AAC JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x1A79 SWAP2 DUP13 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1ABE DUP7 DUP9 PUSH1 0x4 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x7B3 JUMPI INVALID JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1B02 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B44 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1B6F 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 0x1B99 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1BB2 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 0x1BE6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1BD1 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1CDD JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1C05 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C17 SWAP2 SWAP1 PUSH2 0x2A83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C25 SWAP3 SWAP2 SWAP1 PUSH2 0x24FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C60 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 0x1C65 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x1C74 JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x1C7D DUP3 PUSH2 0x20B5 JUMP JUMPDEST SWAP1 PUSH2 0x1C9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP2 SWAP1 PUSH2 0x2653 JUMP JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CA9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CC8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x1BEC JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x1D34 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x1D31 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2969 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x1D6B JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x1D80 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x1D80 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x28F0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2666 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1DEC SWAP3 SWAP2 SWAP1 PUSH2 0x25A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x1E25 SWAP2 SWAP1 PUSH2 0x250B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E62 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 0x1E67 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1E91 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1E91 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E91 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x1EAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x26BA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2695 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27AA JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27E1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2882 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27E1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x1F93 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x1FA8 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x1FA8 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1FEC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x253B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x2025 SWAP2 SWAP1 PUSH2 0x250B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2062 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 0x2067 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2091 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2091 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2091 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x20AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2934 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x20FB JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1130 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1D50 SWAP2 SWAP1 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2146 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x215C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2191 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x219C DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21AC DUP2 PUSH2 0x2B0B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2B0B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21DB JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21F0 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x21FC DUP7 DUP3 DUP8 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2B0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2222 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2237 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2243 DUP6 DUP3 DUP7 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2260 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D9C DUP2 PUSH2 0x2B0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x227C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D9C DUP2 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x22A3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x22AE DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x22BE DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x22CE DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x22F1 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x231F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D9C DUP2 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x233B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2351 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2364 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2372 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2392 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x23A9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x23BA DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2AC7 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23D5 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23ED JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2406 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2418 DUP2 PUSH2 0x2AF3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2437 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2449 DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x246D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x24B4 DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x24C4 DUP2 PUSH2 0x2B0B JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x24E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2AC7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x251D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2AC7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x25F4 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x25D6 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x260B DUP2 DUP5 PUSH2 0x2A03 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2644 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x2632 DUP4 DUP4 MLOAD PUSH2 0x24CF JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x261A JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1D9C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH11 0x496E7465676572203C203 PUSH1 0xAC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A206D696772617465642062616C616E6365206D PUSH1 0x40 DUP3 ADD MSTORE PUSH9 0xEAE6E840DAC2E8C6D PUSH1 0xBB SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1D SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A206E6F206D69677261746F7220736574000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2A99 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2AB2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AE2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2ACA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1165 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2B08 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE DUP8 0xD CHAINID OR 0xB9 PC CODESIZE 0xB9 0xC2 0x25 0xC7 PUSH27 0x9807481015D616D4C96EFBA849A64BBE8C5B2564736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "1095:12460:6:-:0;;;3477:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;3521:14:6;;-1:-1:-1;;;;;;3521:14:6;;;1095:12460;;174:291:-1;;303:2;291:9;282:7;278:23;274:32;271:2;;;-1:-1;;309:12;271:2;97:13;;-1:-1;;;;;744:54;;883:49;;873:2;;-1:-1;;936:12;873:2;361:88;265:200;-1:-1;;;265:200::o;:::-;1095:12460:6;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "2140": [
                  {
                    "length": 32,
                    "start": 2303
                  },
                  {
                    "length": 32,
                    "start": 6641
                  },
                  {
                    "length": 32,
                    "start": 7415
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106101b75760003560e01c806378ed5d1f116100ec57806393f1a40b1161008a578063d1abb90711610064578063d1abb907146104c9578063d2423b51146104e9578063e30c39781461050a578063e7d77cba1461051f576101b7565b806393f1a40b1461045b578063ab7de09814610489578063c346253d146104a9576101b7565b806386f227f5116100c657806386f227f5146103e657806388bba42f146104065780638da5cb5b146104265780638dbdbe6d1461043b576101b7565b806378ed5d1f146103845780637c516e94146103b15780637cd07e47146103d1576101b7565b806323cf3118116101595780634e71e0c8116101335780634e71e0c81461030d57806351eb05a61461032257806357a5b58c1461034f57806358b84f4d1461036f576101b7565b806323cf3118146102ad5780632f940c70146102cd578063454b0608146102ed576101b7565b80630ad58d2f116101955780630ad58d2f146102295780631526fe271461024957806317caf6f11461027857806318fccc761461028d576101b7565b8063033ce5c1146101bc578063078dfbe7146101de578063081e3eda146101fe575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046123c4565b610534565b005b3480156101ea57600080fd5b506101dc6101f936600461217d565b6105a7565b34801561020a57600080fd5b5061021361068d565b6040516102209190612a03565b60405180910390f35b34801561023557600080fd5b506101dc610244366004612459565b610693565b34801561025557600080fd5b506102696102643660046123c4565b610823565b604051610220939291906129d9565b34801561028457600080fd5b50610213610865565b34801561029957600080fd5b506101dc6102a83660046123f4565b61086b565b3480156102b957600080fd5b506101dc6102c836600461230e565b610a05565b3480156102d957600080fd5b506101dc6102e83660046123f4565b610a51565b3480156102f957600080fd5b506101dc6103083660046123c4565b610b72565b34801561031957600080fd5b506101dc610e1e565b34801561032e57600080fd5b5061034261033d3660046123c4565b610eab565b60405161022091906129a0565b34801561035b57600080fd5b506101dc61036a366004612210565b611135565b34801561037b57600080fd5b5061021361116b565b34801561039057600080fd5b506103a461039f3660046123c4565b611171565b6040516102209190612527565b3480156103bd57600080fd5b506101dc6103cc366004612287565b611198565b3480156103dd57600080fd5b506103a461120c565b3480156103f257600080fd5b506102136104013660046123f4565b61121b565b34801561041257600080fd5b506101dc610421366004612486565b611415565b34801561043257600080fd5b506103a4611582565b34801561044757600080fd5b506101dc610456366004612459565b611591565b34801561046757600080fd5b5061047b6104763660046123f4565b61171c565b604051610220929190612a4b565b34801561049557600080fd5b506101dc6104a4366004612423565b611740565b3480156104b557600080fd5b506103a46104c43660046123c4565b611916565b3480156104d557600080fd5b506101dc6104e4366004612459565b611923565b6104fc6104f73660046121c7565b611b56565b6040516102209291906125b9565b34801561051657600080fd5b506103a4611ce6565b34801561052b57600080fd5b506103a4611cf5565b6000546001600160a01b031633146105675760405162461bcd60e51b815260040161055e90612818565b60405180910390fd5b60088190556040517fb2c52d2a36d4454ed77f8f367b8f8112a034172ff2227ea1544ed8b99b1432049061059c908390612a03565b60405180910390a150565b6000546001600160a01b031633146105d15760405162461bcd60e51b815260040161055e90612818565b811561066c576001600160a01b0383161515806105eb5750805b6106075760405162461bcd60e51b815260040161055e90612732565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610688565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b61069b612115565b6106a484610eab565b600085815260066020908152604080832033845290915290208151919250906106f69064e8d4a51000906106e29087906001600160801b0316611d19565b816106e957fe5b6001840154919004611d56565b600182015580546107079085611da3565b815560058054600091908790811061071b57fe5b6000918252602090912001546001600160a01b0316905080156107a157815460405163569db41b60e11b81526001600160a01b0383169163ad3b68369161076e918a9133918a9160009190600401612a0c565b600060405180830381600087803b15801561078857600080fd5b505af115801561079c573d6000803e3d6000fd5b505050505b6107cf8486600489815481106107b357fe5b6000918252602090912001546001600160a01b03169190611dc6565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516108139190612a03565b60405180910390a4505050505050565b6003818154811061083057fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b610873612115565b61087c83610eab565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a51000916108b891906001600160801b0316611d19565b816108bf57fe5b04905060006108e36108de846001015484611d5690919063ffffffff16565b611eb4565b6001840183905590508015610926576109266001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b60006005878154811061093557fe5b6000918252602090912001546001600160a01b0316905080156109ba57835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691610987918b9133918c91899190600401612a0c565b600060405180830381600087803b1580156109a157600080fd5b505af11580156109b5573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516109f49190612a03565b60405180910390a350505050505050565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161055e90612818565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610a8857fe5b6000918252602090912001546001600160a01b031690508015610b0d5760405163569db41b60e11b81526001600160a01b0382169063ad3b683690610ada908890339089906000908190600401612a0c565b600060405180830381600087803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b505050505b610b1f8483600488815481106107b357fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610b639190612a03565b60405180910390a45050505050565b6002546001600160a01b0316610b9a5760405162461bcd60e51b815260040161055e906128b9565b600060048281548110610ba957fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610be4903090600401612527565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3491906123dc565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610c6992169085906004016125a0565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb919061224f565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb90610ced908690600401612527565b602060405180830381600087803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f919061226b565b6040516370a0823160e01b81529091506001600160a01b038216906370a0823190610d6e903090600401612527565b60206040518083038186803b158015610d8657600080fd5b505afa158015610d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbe91906123dc565b8214610ddc5760405162461bcd60e51b815260040161055e90612761565b8060048581548110610dea57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b0316338114610e495760405162461bcd60e51b815260040161055e9061284d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610eb3612115565b60038281548110610ec057fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915042111561113057600060048381548110610f2257fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610f5b903090600401612527565b60206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906123dc565b90508015611054576000610fd583602001516001600160401b031642611da390919063ffffffff16565b9050600060075461100885604001516001600160401b031661100260085486611d1990919063ffffffff16565b90611d19565b8161100f57fe5b049050611046611035846110288464e8d4a51000611d19565b8161102f57fe5b04611eda565b85516001600160801b031690611f03565b6001600160801b0316845250505b61105d42611f32565b6001600160401b03166020830152600380548391908590811061107c57fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926111269290918691612a59565b60405180910390a2505b919050565b8060005b818110156111655761115c84848381811061115057fe5b90506020020135610eab565b50600101611139565b50505050565b60085481565b6004818154811061117e57fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf906111d0908a908a908a908a908a908a908a9060040161255f565b600060405180830381600087803b1580156111ea57600080fd5b505af11580156111fe573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000611225612115565b6003848154811061123257fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b03891686529092529183208251600480549496509194921692889081106112b057fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906112e9903090600401612527565b60206040518083038186803b15801561130157600080fd5b505afa158015611315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133991906123dc565b905083602001516001600160401b03164211801561135657508015155b156113dc57600061137d85602001516001600160401b031642611da390919063ffffffff16565b905060006007546113aa87604001516001600160401b031661100260085486611d1990919063ffffffff16565b816113b157fe5b0490506113d7836113c78364e8d4a51000611d19565b816113ce57fe5b86919004611f5b565b935050505b6001830154835461140a916108de9164e8d4a51000906113fc9087611d19565b8161140357fe5b0490611d56565b979650505050505050565b6000546001600160a01b0316331461143f5760405162461bcd60e51b815260040161055e90612818565b61147e836114786003878154811061145357fe5b60009182526020909120015460075490600160c01b90046001600160401b0316611da3565b90611f5b565b60075561148a83611f32565b6003858154811061149757fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561150b5781600585815481106114dc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611537576005848154811061151d57fe5b6000918252602090912001546001600160a01b0316611539565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e18658584604051611574929190612a3b565b60405180910390a350505050565b6000546001600160a01b031681565b611599612115565b6115a284610eab565b60008581526006602090815260408083206001600160a01b038716845290915290208054919250906115d49085611f5b565b8155815161160b9064e8d4a51000906115f79087906001600160801b0316611d19565b816115fe57fe5b6001840154919004611f7e565b816001018190555060006005868154811061162257fe5b6000918252602090912001546001600160a01b0316905080156116a857815460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611675918a918991829160009190600401612a0c565b600060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050505b6116d833308760048a815481106116bb57fe5b6000918252602090912001546001600160a01b0316929190611fc4565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516108139190612a03565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b0316331461176a5760405162461bcd60e51b815260040161055e90612818565b6007546117779084611f5b565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038086166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090930180549285169290911691909117905560408051606081019091529081526003906020810161182442611f32565b6001600160401b0316815260200161183b86611f32565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b0380841692908516916118da91611da3565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e5866040516119099190612a03565b60405180910390a4505050565b6005818154811061117e57fe5b61192b612115565b61193484610eab565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a510009161197091906001600160801b0316611d19565b8161197757fe5b04905060006119966108de846001015484611d5690919063ffffffff16565b90506119d164e8d4a510006119c186600001516001600160801b031689611d1990919063ffffffff16565b816119c857fe5b84919004611d56565b600184015582546119e29087611da3565b8355611a186001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b600060058881548110611a2757fe5b6000918252602090912001546001600160a01b031690508015611aac57835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611a79918c9133918c91899190600401612a0c565b600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b505050505b611abe868860048b815481106107b357fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611b029190612a03565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611b449190612a03565b60405180910390a35050505050505050565b606080836001600160401b0381118015611b6f57600080fd5b50604051908082528060200260200182016040528015611b99578160200160208202803683370190505b509150836001600160401b0381118015611bb257600080fd5b50604051908082528060200260200182016040528015611be657816020015b6060815260200190600190039081611bd15790505b50905060005b84811015611cdd576000606030888885818110611c0557fe5b9050602002810190611c179190612a83565b604051611c259291906124fb565b600060405180830381855af49150503d8060008114611c60576040519150601f19603f3d011682016040523d82523d6000602084013e611c65565b606091505b50915091508180611c74575085155b611c7d826120b5565b90611c9b5760405162461bcd60e51b815260040161055e9190612653565b5081858481518110611ca957fe5b60200260200101901515908115158152505080848481518110611cc857fe5b60209081029190910101525050600101611bec565b50935093915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000811580611d3457505080820282828281611d3157fe5b04145b611d505760405162461bcd60e51b815260040161055e90612969565b92915050565b6000818303818312801590611d6b5750838113155b80611d805750600083128015611d8057508381135b611d9c5760405162461bcd60e51b815260040161055e906128f0565b9392505050565b80820382811115611d505760405162461bcd60e51b815260040161055e90612666565b60006060846001600160a01b031663a9059cbb8585604051602401611dec9291906125a0565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611e25919061250b565b6000604051808303816000865af19150503d8060008114611e62576040519150601f19603f3d011682016040523d82523d6000602084013e611e67565b606091505b5091509150818015611e91575080511580611e91575080806020019051810190611e91919061224f565b611ead5760405162461bcd60e51b815260040161055e906126ba565b5050505050565b600080821215611ed65760405162461bcd60e51b815260040161055e90612695565b5090565b60006001600160801b03821115611ed65760405162461bcd60e51b815260040161055e906127aa565b8181016001600160801b038083169082161015611d505760405162461bcd60e51b815260040161055e906127e1565b60006001600160401b03821115611ed65760405162461bcd60e51b815260040161055e90612882565b81810181811015611d505760405162461bcd60e51b815260040161055e906127e1565b6000828201818312801590611f935750838112155b80611fa85750600083128015611fa857508381125b611d9c5760405162461bcd60e51b815260040161055e906126f1565b60006060856001600160a01b03166323b872dd868686604051602401611fec9392919061253b565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612025919061250b565b6000604051808303816000865af19150503d8060008114612062576040519150601f19603f3d011682016040523d82523d6000602084013e612067565b606091505b5091509150818015612091575080511580612091575080806020019051810190612091919061224f565b6120ad5760405162461bcd60e51b815260040161055e90612934565b505050505050565b60606044825110156120fb575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c790000006020820152611130565b60048201915081806020019051810190611d50919061232a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612146578182fd5b5081356001600160401b0381111561215c578182fd5b602083019150836020808302850101111561217657600080fd5b9250929050565b600080600060608486031215612191578283fd5b833561219c81612af3565b925060208401356121ac81612b0b565b915060408401356121bc81612b0b565b809150509250925092565b6000806000604084860312156121db578283fd5b83356001600160401b038111156121f0578384fd5b6121fc86828701612135565b90945092505060208401356121bc81612b0b565b60008060208385031215612222578182fd5b82356001600160401b03811115612237578283fd5b61224385828601612135565b90969095509350505050565b600060208284031215612260578081fd5b8151611d9c81612b0b565b60006020828403121561227c578081fd5b8151611d9c81612af3565b600080600080600080600080610100898b0312156122a3578384fd5b88356122ae81612af3565b975060208901356122be81612af3565b965060408901356122ce81612af3565b9550606089013594506080890135935060a089013560ff811681146122f1578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561231f578081fd5b8135611d9c81612af3565b60006020828403121561233b578081fd5b81516001600160401b0380821115612351578283fd5b818401915084601f830112612364578283fd5b815181811115612372578384fd5b604051601f8201601f191681016020018381118282101715612392578586fd5b6040528181528382016020018710156123a9578485fd5b6123ba826020830160208701612ac7565b9695505050505050565b6000602082840312156123d5578081fd5b5035919050565b6000602082840312156123ed578081fd5b5051919050565b60008060408385031215612406578182fd5b82359150602083013561241881612af3565b809150509250929050565b600080600060608486031215612437578081fd5b83359250602084013561244981612af3565b915060408401356121bc81612af3565b60008060006060848603121561246d578081fd5b833592506020840135915060408401356121bc81612af3565b6000806000806080858703121561249b578182fd5b843593506020850135925060408501356124b481612af3565b915060608501356124c481612b0b565b939692955090935050565b600081518084526124e7816020860160208601612ac7565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6000825161251d818460208701612ac7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156125f45781511515845292840192908401906001016125d6565b5050508381038285015280855161260b8184612a03565b91508192508381028201848801865b838110156126445785830385526126328383516124cf565b9487019492509086019060010161261a565b50909998505050505050505050565b600060208252611d9c60208301846124cf565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d6040820152680eae6e840dac2e8c6d60bb1b606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612a99578283fd5b8301803591506001600160401b03821115612ab2578283fd5b60200191503681900382131561217657600080fd5b60005b83811015612ae2578181015183820152602001612aca565b838111156111655750506000910152565b6001600160a01b0381168114612b0857600080fd5b50565b8015158114612b0857600080fdfea26469706673582212200e870d4617b95838b9c225c77a9807481015d616d4c96efba849a64bbe8c5b2564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B7 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78ED5D1F GT PUSH2 0xEC JUMPI DUP1 PUSH4 0x93F1A40B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xD1ABB907 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0xE7D77CBA EQ PUSH2 0x51F JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0xAB7DE098 EQ PUSH2 0x489 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x4A9 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x86F227F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x86F227F5 EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0x88BBA42F EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x43B JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x3D1 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 GT PUSH2 0x159 JUMPI DUP1 PUSH4 0x4E71E0C8 GT PUSH2 0x133 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0x58B84F4D EQ PUSH2 0x36F JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x2ED JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0xAD58D2F GT PUSH2 0x195 JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x28D JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x33CE5C1 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x1FE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x534 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x217D JUMP JUMPDEST PUSH2 0x5A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x68D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x269 PUSH2 0x264 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x865 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x86B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x230E JUMP JUMPDEST PUSH2 0xA05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0xA51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x308 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xB72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0xE1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x342 PUSH2 0x33D CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x29A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x2210 JUMP JUMPDEST PUSH2 0x1135 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x116B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x39F CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2287 JUMP JUMPDEST PUSH2 0x1198 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x120C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x121B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x421 CALLDATASIZE PUSH1 0x4 PUSH2 0x2486 JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x1582 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x456 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x1591 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47B PUSH2 0x476 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x171C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP3 SWAP2 SWAP1 PUSH2 0x2A4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x4A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2423 JUMP JUMPDEST PUSH2 0x1740 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x4C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x1916 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x1923 JUMP JUMPDEST PUSH2 0x4FC PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x21C7 JUMP JUMPDEST PUSH2 0x1B56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 SWAP3 SWAP2 SWAP1 PUSH2 0x25B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x1CE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A4 PUSH2 0x1CF5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x567 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB2C52D2A36D4454ED77F8F367B8F8112A034172FF2227EA1544ED8B99B143204 SWAP1 PUSH2 0x59C SWAP1 DUP4 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x66C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x5EB JUMPI POP DUP1 JUMPDEST PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2732 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x688 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x69B PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x6A4 DUP5 PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x6F6 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6E2 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x6E9 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE DUP1 SLOAD PUSH2 0x707 SWAP1 DUP6 PUSH2 0x1DA3 JUMP JUMPDEST DUP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x71B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x7A1 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x76E SWAP2 DUP11 SWAP2 CALLER SWAP2 DUP11 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x7CF DUP5 DUP7 PUSH1 0x4 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x7B3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x813 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x830 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x873 PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x87C DUP4 PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x8B8 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x8BF JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x8E3 PUSH2 0x8DE DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x1D56 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1EB4 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x926 JUMPI PUSH2 0x926 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x935 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x9BA JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x987 SWAP2 DUP12 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x9F4 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA2F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP1 DUP2 LT PUSH2 0xA88 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xB0D JUMPI PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAD3B6836 SWAP1 PUSH2 0xADA SWAP1 DUP9 SWAP1 CALLER SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xB1F DUP5 DUP4 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x7B3 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP6 PUSH1 0x40 MLOAD PUSH2 0xB63 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBA9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 POP DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xBE4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC34 SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xC69 SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x25A0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCBB SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCE5494BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xCE5494BB SWAP1 PUSH2 0xCED SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD3F SWAP2 SWAP1 PUSH2 0x226B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xD6E SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDBE SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST DUP3 EQ PUSH2 0xDDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2761 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xDEA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0xE49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x284D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xEB3 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xEC0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP1 DUP3 ADD MSTORE SWAP2 POP TIMESTAMP GT ISZERO PUSH2 0x1130 JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xF22 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xF5B SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFAB SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1054 JUMPI PUSH1 0x0 PUSH2 0xFD5 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0x1DA3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x1008 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1002 PUSH1 0x8 SLOAD DUP7 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x100F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1046 PUSH2 0x1035 DUP5 PUSH2 0x1028 DUP5 PUSH5 0xE8D4A51000 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x102F JUMPI INVALID JUMPDEST DIV PUSH2 0x1EDA JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x1F03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x105D TIMESTAMP PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x107C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD SWAP2 ADD DUP1 SLOAD DUP5 DUP5 ADD MLOAD PUSH1 0x40 SWAP6 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0x1126 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x2A59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1165 JUMPI PUSH2 0x115C DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1150 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xEAB JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1139 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x117E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x11D0 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x255F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1225 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x3 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1232 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP6 ADD MSTORE DUP9 DUP6 MSTORE PUSH1 0x6 DUP4 MSTORE DUP4 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP2 DUP4 KECCAK256 DUP3 MLOAD PUSH1 0x4 DUP1 SLOAD SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP3 AND SWAP3 DUP9 SWAP1 DUP2 LT PUSH2 0x12B0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x12E9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1315 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1339 SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x1356 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13DC JUMPI PUSH1 0x0 PUSH2 0x137D DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0x1DA3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x13AA DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1002 PUSH1 0x8 SLOAD DUP7 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x13B1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x13D7 DUP4 PUSH2 0x13C7 DUP4 PUSH5 0xE8D4A51000 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x13CE JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0x1F5B JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x140A SWAP2 PUSH2 0x8DE SWAP2 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x13FC SWAP1 DUP8 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1403 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1D56 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x143F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH2 0x147E DUP4 PUSH2 0x1478 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1453 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x7 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1DA3 JUMP JUMPDEST SWAP1 PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x148A DUP4 PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1497 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x150B JUMPI DUP2 PUSH1 0x5 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x14DC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x1537 JUMPI PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x151D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1539 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x95895A6AB1DF54420D241B55243258A33E61B2194DB66C1179EC521AAE8E1865 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1574 SWAP3 SWAP2 SWAP1 PUSH2 0x2A3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1599 PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x15A2 DUP5 PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x15D4 SWAP1 DUP6 PUSH2 0x1F5B JUMP JUMPDEST DUP2 SSTORE DUP2 MLOAD PUSH2 0x160B SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x15F7 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x15FE JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x1F7E JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1622 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x16A8 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x1675 SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP3 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x168F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x16D8 CALLER ADDRESS DUP8 PUSH1 0x4 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x16BB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x1FC4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x813 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x176A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x1777 SWAP1 DUP5 PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD SWAP1 SWAP3 SSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP5 ADD DUP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 PUSH1 0x20 DUP2 ADD PUSH2 0x1824 TIMESTAMP PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x183B DUP7 PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 DUP5 MLOAD SWAP3 ADD DUP1 SLOAD SWAP6 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD DUP5 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP6 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP3 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 PUSH2 0x18DA SWAP2 PUSH2 0x1DA3 JUMP JUMPDEST PUSH32 0x81EE0F8C5C46E2CB41984886F77A84181724ABB86C32A5F6DE539B07509D45E5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1909 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x117E JUMPI INVALID JUMPDEST PUSH2 0x192B PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x1934 DUP5 PUSH2 0xEAB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x1970 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1977 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x1996 PUSH2 0x8DE DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x1D56 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x19D1 PUSH5 0xE8D4A51000 PUSH2 0x19C1 DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x19C8 JUMPI INVALID JUMPDEST DUP5 SWAP2 SWAP1 DIV PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE DUP3 SLOAD PUSH2 0x19E2 SWAP1 DUP8 PUSH2 0x1DA3 JUMP JUMPDEST DUP4 SSTORE PUSH2 0x1A18 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x1A27 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x1AAC JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x569DB41B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xAD3B6836 SWAP2 PUSH2 0x1A79 SWAP2 DUP13 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1ABE DUP7 DUP9 PUSH1 0x4 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x7B3 JUMPI INVALID JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1B02 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B44 SWAP2 SWAP1 PUSH2 0x2A03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1B6F 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 0x1B99 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1BB2 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 0x1BE6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1BD1 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1CDD JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1C05 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C17 SWAP2 SWAP1 PUSH2 0x2A83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C25 SWAP3 SWAP2 SWAP1 PUSH2 0x24FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C60 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 0x1C65 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x1C74 JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x1C7D DUP3 PUSH2 0x20B5 JUMP JUMPDEST SWAP1 PUSH2 0x1C9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP2 SWAP1 PUSH2 0x2653 JUMP JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CA9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CC8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x1BEC JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x1D34 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x1D31 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2969 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x1D6B JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x1D80 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x1D80 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x28F0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2666 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1DEC SWAP3 SWAP2 SWAP1 PUSH2 0x25A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x1E25 SWAP2 SWAP1 PUSH2 0x250B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E62 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 0x1E67 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1E91 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1E91 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E91 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x1EAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x26BA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2695 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27AA JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27E1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2882 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27E1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x1F93 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x1FA8 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x1FA8 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1FEC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x253B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x2025 SWAP2 SWAP1 PUSH2 0x250B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2062 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 0x2067 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2091 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2091 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2091 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x20AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2934 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x20FB JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1130 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1D50 SWAP2 SWAP1 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2146 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x215C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2191 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x219C DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21AC DUP2 PUSH2 0x2B0B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2B0B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21DB JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21F0 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x21FC DUP7 DUP3 DUP8 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2B0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2222 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2237 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2243 DUP6 DUP3 DUP7 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2260 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D9C DUP2 PUSH2 0x2B0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x227C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D9C DUP2 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x22A3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x22AE DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x22BE DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x22CE DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x22F1 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x231F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D9C DUP2 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x233B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2351 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2364 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2372 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2392 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x23A9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x23BA DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2AC7 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23D5 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23ED JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2406 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2418 DUP2 PUSH2 0x2AF3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2437 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2449 DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x246D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x24B4 DUP2 PUSH2 0x2AF3 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x24C4 DUP2 PUSH2 0x2B0B JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x24E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2AC7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x251D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2AC7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x25F4 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x25D6 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x260B DUP2 DUP5 PUSH2 0x2A03 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2644 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x2632 DUP4 DUP4 MLOAD PUSH2 0x24CF JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x261A JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1D9C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH11 0x496E7465676572203C203 PUSH1 0xAC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A206D696772617465642062616C616E6365206D PUSH1 0x40 DUP3 ADD MSTORE PUSH9 0xEAE6E840DAC2E8C6D PUSH1 0xBB SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1D SWAP1 DUP3 ADD MSTORE PUSH32 0x4D61737465724368656656323A206E6F206D69677261746F7220736574000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2A99 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2AB2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AE2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2ACA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1165 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2B08 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE DUP8 0xD CHAINID OR 0xB9 PC CODESIZE 0xB9 0xC2 0x25 0xC7 PUSH27 0x9807481015D616D4C96EFBA849A64BBE8C5B2564736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "1095:12460:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5470:167;;;;;;;;;;-1:-1:-1;5470:167:6;;;;;:::i;:::-;;:::i;:::-;;774:472:1;;;;;;;;;;-1:-1:-1;774:472:1;;;;;:::i;:::-;;:::i;3595:98:6:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9927:670;;;;;;;;;;-1:-1:-1;9927:670:6;;;;;:::i;:::-;;:::i;2084:26::-;;;;;;;;;;-1:-1:-1;2084:26:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2514:30::-;;;;;;;;;;;;;:::i;10768:788::-;;;;;;;;;;-1:-1:-1;10768:788:6;;;;;:::i;:::-;;:::i;5772:100::-;;;;;;;;;;-1:-1:-1;5772:100:6;;;;;:::i;:::-;;:::i;12992:561::-;;;;;;;;;;-1:-1:-1;12992:561:6;;;;;:::i;:::-;;:::i;6023:474::-;;;;;;;;;;-1:-1:-1;6023:474:6;;;;;:::i;:::-;;:::i;1295:348:1:-;;;;;;;;;;;;;:::i;8046:772:6:-;;;;;;;;;;-1:-1:-1;8046:772:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7682:188::-;;;;;;;;;;-1:-1:-1;7682:188:6;;;;;:::i;:::-;;:::i;2551:29::-;;;;;;;;;;;;;:::i;2173:23::-;;;;;;;;;;-1:-1:-1;2173:23:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2161:246:0:-;;;;;;;;;;-1:-1:-1;2161:246:0;;;;;:::i;:::-;;:::i;2011:29:6:-;;;;;;;;;;;;;:::i;6716:791::-;;;;;;;;;;-1:-1:-1;6716:791:6;;;;;:::i;:::-;;:::i;4886:406::-;;;;;;;;;;-1:-1:-1;4886:406:6;;;;;:::i;:::-;;:::i;350:20:1:-;;;;;;;;;;;;;:::i;9053:671:6:-;;;;;;;;;;-1:-1:-1;9053:671:6;;;;;:::i;:::-;;:::i;2349:66::-;;;;;;;;;;-1:-1:-1;2349:66:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4022:480::-;;;;;;;;;;-1:-1:-1;4022:480:6;;;;;:::i;:::-;;:::i;2261:27::-;;;;;;;;;;-1:-1:-1;2261:27:6;;;;;:::i;:::-;;:::i;11833:982::-;;;;;;;;;;-1:-1:-1;11833:982:6;;;;;:::i;:::-;;:::i;1260:554:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;397:27:1:-;;;;;;;;;;;;;:::i;1874:29:6:-;;;;;;;;;;;;;:::i;5470:167::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;;;;;;;;;5549:14:6::1;:32:::0;;;5596:34:::1;::::0;::::1;::::0;::::1;::::0;5566:15;;5596:34:::1;:::i;:::-;;;;;;;;5470:167:::0;:::o;774:472:1:-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;;-1:-1:-1::0;;;925:68:1::1;;;;;;;:::i;:::-;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;3595:98:6:-;3671:8;:15;;3595:98::o;9927:670::-;10003:20;;:::i;:::-;10026:15;10037:3;10026:10;:15::i;:::-;10051:21;10075:13;;;:8;:13;;;;;;;;10089:10;10075:25;;;;;;;10186:21;;10003:38;;-1:-1:-1;10075:25:6;10148:84;;2633:4;;10175:33;;:6;;-1:-1:-1;;;;;10175:33:6;:10;:33::i;:::-;:55;;;;;10148:15;;;;;10175:55;;10148:19;:84::i;:::-;10130:15;;;:102;10256:11;;:23;;10272:6;10256:15;:23::i;:::-;10242:37;;10336:8;:13;;10242:11;;10336:8;10345:3;;10336:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10336:13:6;;-1:-1:-1;10363:32:6;;10359:123;;10459:11;;10411:60;;-1:-1:-1;;;10411:60:6;;-1:-1:-1;;;;;10411:23:6;;;;;:60;;10435:3;;10440:10;;10452:2;;10456:1;;10459:11;10411:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10359:123;10500:37;10526:2;10530:6;10500:7;10508:3;10500:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10500:12:6;;:37;:25;:37::i;:::-;10587:2;-1:-1:-1;;;;;10553:37:6;10574:3;10562:10;-1:-1:-1;;;;;10553:37:6;;10579:6;10553:37;;;;;;:::i;:::-;;;;;;;;9927:670;;;;;;:::o;2084:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2084:26:6;;;-1:-1:-1;;;;;;;;;2084:26:6;;;;;-1:-1:-1;;;2084:26:6;;;;:::o;2514:30::-;;;;:::o;10768:788::-;10827:20;;:::i;:::-;10850:15;10861:3;10850:10;:15::i;:::-;10875:21;10899:13;;;:8;:13;;;;;;;;10913:10;10899:25;;;;;;;10983:21;;10967:11;;10827:38;;-1:-1:-1;10899:25:6;;2633:4;;10967:38;;:11;-1:-1:-1;;;;;10967:38:6;:15;:38::i;:::-;:60;;;;;;10934:94;;11038:21;11062:49;:37;11083:4;:15;;;11062:16;:20;;:37;;;;:::i;:::-;:47;:49::i;:::-;11141:15;;;:34;;;11038:73;-1:-1:-1;11214:18:6;;11210:86;;11248:37;-1:-1:-1;;;;;11248:5:6;:18;11267:2;11271:13;11248:18;:37::i;:::-;11314:19;11336:8;11345:3;11336:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11336:13:6;;-1:-1:-1;11363:32:6;;11359:136;;11472:11;;11411:73;;-1:-1:-1;;;11411:73:6;;-1:-1:-1;;;;;11411:23:6;;;;;:73;;11436:3;;11441:10;;11453:2;;11457:13;;11472:11;11411:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11359:136;11530:3;11518:10;-1:-1:-1;;;;;11510:39:6;;11535:13;11510:39;;;;;;:::i;:::-;;;;;;;;10768:788;;;;;;;:::o;5772:100::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5845:8:6::1;:20:::0;;-1:-1:-1;;;;;;5845:20:6::1;-1:-1:-1::0;;;;;5845:20:6;;;::::1;::::0;;;::::1;::::0;;5772:100::o;12992:561::-;13061:21;13085:13;;;:8;:13;;;;;;;;13099:10;13085:25;;;;;;;13137:11;;13158:15;;;-1:-1:-1;13183:15:6;;:19;;;13235:8;:13;;13085:25;;13137:11;;13094:3;;13235:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13235:13:6;;-1:-1:-1;13262:32:6;;13258:113;;13310:50;;-1:-1:-1;;;13310:50:6;;-1:-1:-1;;;;;13310:23:6;;;;;:50;;13334:3;;13339:10;;13351:2;;13355:1;;;;13310:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13258:113;13448:37;13474:2;13478:6;13448:7;13456:3;13448:12;;;;;;;:37;13543:2;-1:-1:-1;;;;;13500:46:6;13530:3;13518:10;-1:-1:-1;;;;;13500:46:6;;13535:6;13500:46;;;;;;:::i;:::-;;;;;;;;12992:561;;;;;:::o;6023:474::-;6087:8;;-1:-1:-1;;;;;6087:8:6;6071:73;;;;-1:-1:-1;;;6071:73:6;;;;;;;:::i;:::-;6154:15;6172:7;6180:4;6172:13;;;;;;;;;;;;;;;;;6209:33;;-1:-1:-1;;;6209:33:6;;-1:-1:-1;;;;;6172:13:6;;;;-1:-1:-1;6172:13:6;;6209:18;;:33;;6236:4;;6209:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6277:8;;6252:40;;-1:-1:-1;;;6252:40:6;;6195:47;;-1:-1:-1;;;;;;6252:16:6;;;;;;:40;;6277:8;;6195:47;;6252:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6322:8:6;;:26;;-1:-1:-1;;;6322:26:6;;6302:17;;-1:-1:-1;;;;;6322:8:6;;:16;;:26;;6339:8;;6322:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6373:35;;-1:-1:-1;;;6373:35:6;;6302:46;;-1:-1:-1;;;;;;6373:20:6;;;;;:35;;6402:4;;6373:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6366:3;:42;6358:96;;;;-1:-1:-1;;;6358:96:6;;;;;;;:::i;:::-;6480:10;6464:7;6472:4;6464:13;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1;;;;;6464:26:6;;;;;-1:-1:-1;;;;;6464:26:6;;;;;;6023:474;;;;:::o;1295:348:1:-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;-1:-1:-1;;;1415:72:1;;;;;;;:::i;:::-;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;8046:772:6:-;8095:20;;:::i;:::-;8134:8;8143:3;8134:13;;;;;;;;;;;;;;;;;8127:20;;;;;;;;8134:13;;;;8127:20;-1:-1:-1;;;;;8127:20:6;;;;-1:-1:-1;;;;;;;;8127:20:6;;;;;;;;;;-1:-1:-1;;;8127:20:6;;;;;;;;;-1:-1:-1;8161:15:6;:37;8157:655;;;8214:16;8233:7;8241:3;8233:12;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;8233:37:6;;-1:-1:-1;;;;;8233:12:6;;;;:22;;:37;;8264:4;;8233:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8214:56;-1:-1:-1;8288:12:6;;8284:335;;8320:12;8335:40;8355:4;:19;;;-1:-1:-1;;;;;8335:40:6;:15;:19;;:40;;;;:::i;:::-;8320:55;;8393:19;8463:15;;8415:45;8444:4;:15;;;-1:-1:-1;;;;;8415:45:6;:24;8424:14;;8415:4;:8;;:24;;;;:::i;:::-;:28;;:45::i;:::-;:63;;;;;;;-1:-1:-1;8520:84:6;8546:57;8586:8;8547:36;8415:63;2633:4;8547:15;:36::i;:::-;:47;;;;;;8546:55;:57::i;:::-;8520:21;;-1:-1:-1;;;;;8520:25:6;;;:84::i;:::-;-1:-1:-1;;;;;8496:108:6;;;-1:-1:-1;;8284:335:6;8654:22;:15;:20;:22::i;:::-;-1:-1:-1;;;;;8632:44:6;:19;;;:44;8690:8;:13;;8632:4;;8690:8;8699:3;;8690:13;;;;;;;;;;;;;;;:20;;:13;;:20;;;;;;;;;;;-1:-1:-1;;;;;;8690:20:6;;;-1:-1:-1;;;;;8690:20:6;;;;;;;-1:-1:-1;;;;8690:20:6;-1:-1:-1;;;;;;;;8690:20:6;;;;;-1:-1:-1;;;;;8690:20:6;-1:-1:-1;;;8690:20:6;;;;;;;;;;;;;;8748:19;;;8779:21;;8729:72;;8743:3;;8729:72;;;;8748:19;;8769:8;;8729:72;:::i;:::-;;;;;;;;8157:655;;8046:772;;;:::o;7682:188::-;7765:4;7751:11;7786:78;7810:3;7806:1;:7;7786:78;;;7834:19;7845:4;;7850:1;7845:7;;;;;;;;;;;;;7834:10;:19::i;:::-;-1:-1:-1;7815:3:6;;7786:78;;;;7682:188;;;:::o;2551:29::-;;;;:::o;2173:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2173:23:6;;-1:-1:-1;2173:23:6;:::o;2161:246:0:-;2350:49;;-1:-1:-1;;;2350:49:0;;-1:-1:-1;;;;;2350:12:0;;;;;:49;;2363:4;;2369:2;;2373:6;;2381:8;;2391:1;;2394;;2397;;2350:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:246;;;;;;;;:::o;2011:29:6:-;;;-1:-1:-1;;;;;2011:29:6;;:::o;6716:791::-;6790:15;6817:20;;:::i;:::-;6840:8;6849:4;6840:14;;;;;;;;;;;;;;;;6817:37;;;;;;;;6840:14;;;;6817:37;-1:-1:-1;;;;;6817:37:6;;;;;-1:-1:-1;;;;;;;;6817:37:6;;;;;;;;-1:-1:-1;;;6817:37:6;;;;;;;;;;6888:14;;;:8;:14;;;;;-1:-1:-1;;;;;6888:21:6;;;;;;;;;;6946;;6996:7;:13;;6817:37;;-1:-1:-1;6888:21:6;;6919:48;;;6897:4;;6996:13;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;6996:38:6;;-1:-1:-1;;;;;6996:13:6;;;;:23;;:38;;7028:4;;6996:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6977:57;;7066:4;:19;;;-1:-1:-1;;;;;7048:37:6;:15;:37;:54;;;;-1:-1:-1;7089:13:6;;;7048:54;7044:341;;;7118:12;7133:40;7153:4;:19;;;-1:-1:-1;;;;;7133:40:6;:15;:19;;:40;;;;:::i;:::-;7118:55;;7187:19;7257:15;;7209:45;7238:4;:15;;;-1:-1:-1;;;;;7209:45:6;:24;7218:14;;7209:4;:8;;:24;;;;:::i;:45::-;:63;;;;;;;-1:-1:-1;7305:69:6;7365:8;7326:36;7209:63;2633:4;7326:15;:36::i;:::-;:47;;;;;7305:16;;7326:47;;7305:20;:69::i;:::-;7286:88;;7044:341;;;7472:15;;;;7411:11;;7404:96;;:84;;2633:4;;7411:33;;7427:16;7411:15;:33::i;:::-;:55;;;;;;;7404:67;:84::i;:96::-;7394:106;6716:791;-1:-1:-1;;;;;;;6716:791:6:o;4886:406::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5016:63:6::1;5067:11;5016:46;5036:8;5045:4;5036:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:25:::0;5016:15:::1;::::0;;-1:-1:-1;;;5036:25:6;::::1;-1:-1:-1::0;;;;;5036:25:6::1;5016:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;4998:15;:81:::0;5117:18:::1;:11:::0;:16:::1;:18::i;:::-;5089:8;5098:4;5089:14;;;;;;;;;;;;;;;:25;;;:46;;;;;-1:-1:-1::0;;;;;5089:46:6::1;;;;;-1:-1:-1::0;;;;;5089:46:6::1;;;;;;5149:9;5145:46;;;5179:9;5162:8;5171:4;5162:14;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1::0;;;;;5162:26:6::1;;;;;-1:-1:-1::0;;;;;5162:26:6::1;;;;;;5145:46;5235:9;:38;;5259:8;5268:4;5259:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;5259:14:6::1;5235:38;;;5247:9;5235:38;-1:-1:-1::0;;;;;5205:80:6::1;5216:4;5205:80;5222:11;5275:9;5205:80;;;;;;;:::i;:::-;;;;;;;;4886:406:::0;;;;:::o;350:20:1:-;;;-1:-1:-1;;;;;350:20:1;;:::o;9053:671:6:-;9128:20;;:::i;:::-;9151:15;9162:3;9151:10;:15::i;:::-;9176:21;9200:13;;;:8;:13;;;;;;;;-1:-1:-1;;;;;9200:17:6;;;;;;;;;9261:11;;9128:38;;-1:-1:-1;9200:17:6;9261:23;;9277:6;9261:15;:23::i;:::-;9247:37;;9350:21;;9312:84;;2633:4;;9339:33;;:6;;-1:-1:-1;;;;;9339:33:6;:10;:33::i;:::-;:55;;;;;9312:15;;;;;9339:55;;9312:19;:84::i;:::-;9294:4;:15;;:102;;;;9431:19;9453:8;9462:3;9453:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9453:13:6;;-1:-1:-1;9480:32:6;;9476:115;;9568:11;;9528:52;;-1:-1:-1;;;9528:52:6;;-1:-1:-1;;;;;9528:23:6;;;;;:52;;9552:3;;9557:2;;;;9565:1;;9568:11;9528:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9476:115;9601:64;9631:10;9651:4;9658:6;9601:7;9609:3;9601:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9601:12:6;;:64;;:29;:64::i;:::-;9714:2;-1:-1:-1;;;;;9681:36:6;9701:3;9689:10;-1:-1:-1;;;;;9681:36:6;;9706:6;9681:36;;;;;;:::i;2349:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4022:480::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;4138:15:6::1;::::0;:31:::1;::::0;4158:10;4138:19:::1;:31::i;:::-;4120:15;:49:::0;4179:7:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;4179:22:6;;::::1;-1:-1:-1::0;;;;;;4179:22:6;;::::1;;::::0;;;4211:8:::1;:24:::0;;;;::::1;::::0;;-1:-1:-1;4211:24:6;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;4260:148:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;4179:22:6::1;4260:148:::0;::::1;4342:22;:15;:20;:22::i;:::-;-1:-1:-1::0;;;;;4260:148:6::1;;;;;4295:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;4260:148:6;;::::1;::::0;;;4246:163;;::::1;::::0;;::::1;::::0;;-1:-1:-1;4246:163:6;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;4246:163:6::1;-1:-1:-1::0;;;;;4246:163:6;;;::::1;-1:-1:-1::0;;;4246:163:6::1;-1:-1:-1::0;;;;;;;;;4246:163:6;;::::1;-1:-1:-1::0;;;;;;4246:163:6;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;4440:7:::1;:14:::0;-1:-1:-1;;;;;4424:71:6;;::::1;::::0;;;::::1;::::0;4440:21:::1;::::0;:18:::1;:21::i;:::-;4424:71;4463:10;4424:71;;;;;;:::i;:::-;;;;;;;;4022:480:::0;;;:::o;2261:27::-;;;;;;;;;;11833:982;11919:20;;:::i;:::-;11942:15;11953:3;11942:10;:15::i;:::-;11967:21;11991:13;;;:8;:13;;;;;;;;12005:10;11991:25;;;;;;;12075:21;;12059:11;;11919:38;;-1:-1:-1;11991:25:6;;2633:4;;12059:38;;:11;-1:-1:-1;;;;;12059:38:6;:15;:38::i;:::-;:60;;;;;;12026:94;;12130:21;12154:49;:37;12175:4;:15;;;12154:16;:20;;:37;;;;:::i;:49::-;12130:73;;12251:85;2633:4;12279:33;12290:4;:21;;;-1:-1:-1;;;;;12279:33:6;:6;:10;;:33;;;;:::i;:::-;:55;;;;;12251:16;;12279:55;;12251:20;:85::i;:::-;12233:15;;;:103;12360:11;;:23;;12376:6;12360:15;:23::i;:::-;12346:37;;12426;-1:-1:-1;;;;;12426:5:6;:18;12445:2;12449:13;12426:18;:37::i;:::-;12474:19;12496:8;12505:3;12496:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12496:13:6;;-1:-1:-1;12523:32:6;;12519:135;;12631:11;;12571:72;;-1:-1:-1;;;12571:72:6;;-1:-1:-1;;;;;12571:23:6;;;;;:72;;12595:3;;12600:10;;12612:2;;12616:13;;12631:11;12571:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12519:135;12664:37;12690:2;12694:6;12664:7;12672:3;12664:12;;;;;;;:37;12751:2;-1:-1:-1;;;;;12717:37:6;12738:3;12726:10;-1:-1:-1;;;;;12717:37:6;;12743:6;12717:37;;;;;;:::i;:::-;;;;;;;;12789:3;12777:10;-1:-1:-1;;;;;12769:39:6;;12794:13;12769:39;;;;;;:::i;:::-;;;;;;;;11833:982;;;;;;;;:::o;1260:554:0:-;1343:23;;1451:5;-1:-1:-1;;;;;1440:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1440:24:0;-1:-1:-1;1428:36:0;-1:-1:-1;1497:5:0;-1:-1:-1;;;;;1485:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:35;;1526:9;1521:286;1541:16;;;1521:286;;;1580:12;1594:19;1625:4;1644:5;;1650:1;1644:8;;;;;;;;;;;;;;;;;;:::i;:::-;1617:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:74;;;;1676:7;:24;;;;1688:12;1687:13;1676:24;1702:21;1716:6;1702:13;:21::i;:::-;1668:56;;;;;-1:-1:-1;;;1668:56:0;;;;;;;;:::i;:::-;;1754:7;1739:9;1749:1;1739:12;;;;;;;;;;;;;:22;;;;;;;;;;;1789:6;1776:7;1784:1;1776:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;1559:3:0;;1521:286;;;;1260:554;;;;;;:::o;397:27:1:-;;;-1:-1:-1;;;;;397:27:1;;:::o;1874:29:6:-;;;:::o;470:137:4:-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;-1:-1:-1;;;540:65:4;;;;;;;:::i;:::-;470:137;;;;:::o;1895:213:9:-;1951:6;1980:5;;;2004:6;;;;;;:16;;;2019:1;2014;:6;;2004:16;2003:38;;;;2030:1;2026;:5;:14;;;;;2039:1;2035;:5;2026:14;1995:87;;;;-1:-1:-1;;;1995:87:9;;;;;;;:::i;:::-;2100:1;1895:213;-1:-1:-1;;;1895:213:9:o;342:122:4:-;425:5;;;420:16;;;;412:50;;;;-1:-1:-1;;;412:50:4;;;;;;;:::i;951:304:3:-;1036:12;1050:17;1079:5;-1:-1:-1;;;;;1071:19:3;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1149:98;;;;-1:-1:-1;;;1149:98:3;;;;;;;:::i;:::-;951:304;;;;;:::o;2557:135:9:-;2609:7;2641:1;2636;:6;;2628:30;;;;-1:-1:-1;;;2628:30:9;;;;;;;:::i;:::-;-1:-1:-1;2683:1:9;2557:135::o;613:161:4:-;662:9;-1:-1:-1;;;;;692:16:4;;;684:57;;;;-1:-1:-1;;;684:57:4;;;;;;;:::i;1134:125::-;1217:5;;;-1:-1:-1;;;;;1212:16:4;;;;;;;;1204:53;;;;-1:-1:-1;;;1204:53:4;;;;;;;:::i;780:156::-;828:8;-1:-1:-1;;;;;857:15:4;;;849:55;;;;-1:-1:-1;;;849:55:4;;;;;;;:::i;211:125::-;294:5;;;289:16;;;;281:53;;;;-1:-1:-1;;;281:53:4;;;;;;;:::i;2341:210:9:-;2397:6;2426:5;;;2450:6;;;;;;:16;;;2465:1;2460;:6;;2450:16;2449:38;;;;2476:1;2472;:5;:14;;;;;2485:1;2481;:5;2472:14;2441:84;;;;-1:-1:-1;;;2441:84:9;;;;;;;:::i;1263:332:3:-;1366:12;1380:17;1409:5;-1:-1:-1;;;;;1401:19:3;1444:10;1456:4;1462:2;1466:6;1421:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1421:52:3;;;;;;;;;;;1401:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:109;;;;1493:7;:57;;;;-1:-1:-1;1505:11:3;;:16;;:44;;;1536:4;1525:24;;;;;;;;;;;;:::i;:::-;1485:102;;;;-1:-1:-1;;;1485:102:3;;;;;;;:::i;:::-;1263:332;;;;;;:::o;304:496:0:-;376:13;539:2;518:11;:18;:23;514:67;;;-1:-1:-1;543:38:0;;;;;;;;;;;;;;;;;;;514:67;685:4;672:11;668:22;653:37;;729:11;718:33;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:363::-;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;-1:-1;337:20;;-1:-1;;;;;366:30;;363:2;;;-1:-1;;399:12;363:2;443:4;435:6;431:17;419:29;;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;511:1;;501:12;454:2;259:262;;;;;:::o;2862:479::-;;;;2994:2;2982:9;2973:7;2969:23;2965:32;2962:2;;;-1:-1;;3000:12;2962:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3052:63;-1:-1;3152:2;3188:22;;971:20;996:30;971:20;996:30;:::i;:::-;3160:60;-1:-1;3257:2;3293:22;;971:20;996:30;971:20;996:30;:::i;:::-;3265:60;;;;2956:385;;;;;:::o;3348:538::-;;;;3512:2;3500:9;3491:7;3487:23;3483:32;3480:2;;;-1:-1;;3518:12;3480:2;3576:17;3563:31;-1:-1;;;;;3606:6;3603:30;3600:2;;;-1:-1;;3636:12;3600:2;3674:91;3757:7;3748:6;3737:9;3733:22;3674:91;:::i;:::-;3656:109;;-1:-1;3656:109;-1:-1;;3802:2;3838:22;;971:20;996:30;971:20;996:30;:::i;3893:397::-;;;4032:2;4020:9;4011:7;4007:23;4003:32;4000:2;;;-1:-1;;4038:12;4000:2;4096:17;4083:31;-1:-1;;;;;4126:6;4123:30;4120:2;;;-1:-1;;4156:12;4120:2;4194:80;4266:7;4257:6;4246:9;4242:22;4194:80;:::i;:::-;4176:98;;;;-1:-1;3994:296;-1:-1;;;;3994:296::o;4297:257::-;;4409:2;4397:9;4388:7;4384:23;4380:32;4377:2;;;-1:-1;;4415:12;4377:2;1119:6;1113:13;1131:30;1155:5;1131:30;:::i;4561:291::-;;4690:2;4678:9;4669:7;4665:23;4661:32;4658:2;;;-1:-1;;4696:12;4658:2;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;4859:1145::-;;;;;;;;;5094:3;5082:9;5073:7;5069:23;5065:33;5062:2;;;-1:-1;;5101:12;5062:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;:::-;5153:77;-1:-1;5267:2;5306:22;;72:20;97:33;72:20;97:33;:::i;:::-;5275:63;-1:-1;5375:2;5414:22;;72:20;97:33;72:20;97:33;:::i;:::-;5383:63;-1:-1;5483:2;5522:22;;2518:20;;-1:-1;5591:3;5631:22;;2518:20;;-1:-1;5700:3;5738:22;;2794:20;40581:4;40570:16;;43669:33;;43659:2;;-1:-1;;43706:12;43659:2;5056:948;;;;-1:-1;5056:948;;;;;;5709:61;;-1:-1;;;5807:3;5847:22;;1240:20;;5916:3;5956:22;1240:20;;5056:948::o;6011:285::-;;6137:2;6125:9;6116:7;6112:23;6108:32;6105:2;;;-1:-1;;6143:12;6105:2;1746:6;1733:20;1758:55;1807:5;1758:55;:::i;6303:362::-;;6428:2;6416:9;6407:7;6403:23;6399:32;6396:2;;;-1:-1;;6434:12;6396:2;6485:17;6479:24;-1:-1;;;;;6523:18;6515:6;6512:30;6509:2;;;-1:-1;;6545:12;6509:2;6632:6;6621:9;6617:22;;;2112:3;2105:4;2097:6;2093:17;2089:27;2079:2;;-1:-1;;2120:12;2079:2;2160:6;2154:13;6523:18;37217:6;37214:30;37211:2;;;-1:-1;;37247:12;37211:2;36880;36874:9;37320;37301:17;;-1:-1;;37297:33;36906:17;;6428:2;36906:17;36966:34;;;37002:22;;;36963:62;36960:2;;;-1:-1;;37028:12;36960:2;36880;37047:22;2253:21;;;2353:16;;;6428:2;2353:16;2350:25;-1:-1;2347:2;;;-1:-1;;2378:12;2347:2;2398:39;2430:6;6428:2;2329:5;2325:16;6428:2;2295:6;2291:17;2398:39;:::i;:::-;6565:84;6390:275;-1:-1;;;;;;6390:275::o;6672:241::-;;6776:2;6764:9;6755:7;6751:23;6747:32;6744:2;;;-1:-1;;6782:12;6744:2;-1:-1;2518:20;;6738:175;-1:-1;6738:175::o;6920:263::-;;7035:2;7023:9;7014:7;7010:23;7006:32;7003:2;;;-1:-1;;7041:12;7003:2;-1:-1;2666:13;;6997:186;-1:-1;6997:186::o;7190:366::-;;;7311:2;7299:9;7290:7;7286:23;7282:32;7279:2;;;-1:-1;;7317:12;7279:2;2531:6;2518:20;7369:63;;7469:2;7512:9;7508:22;72:20;97:33;124:5;97:33;:::i;:::-;7477:63;;;;7273:283;;;;;:::o;7563:555::-;;;;7733:2;7721:9;7712:7;7708:23;7704:32;7701:2;;;-1:-1;;7739:12;7701:2;2531:6;2518:20;7791:63;;7891:2;7948:9;7944:22;1391:20;1416:47;1457:5;1416:47;:::i;:::-;7899:77;-1:-1;8013:2;8070:22;;1910:20;1935:51;1910:20;1935:51;:::i;8125:491::-;;;;8263:2;8251:9;8242:7;8238:23;8234:32;8231:2;;;-1:-1;;8269:12;8231:2;2531:6;2518:20;8321:63;;8421:2;8464:9;8460:22;2518:20;8429:63;;8529:2;8572:9;8568:22;72:20;97:33;124:5;97:33;:::i;8623:647::-;;;;;8793:3;8781:9;8772:7;8768:23;8764:33;8761:2;;;-1:-1;;8800:12;8761:2;2531:6;2518:20;8852:63;;8952:2;8995:9;8991:22;2518:20;8960:63;;9060:2;9121:9;9117:22;1910:20;1935:51;1980:5;1935:51;:::i;:::-;9068:81;-1:-1;9186:2;9222:22;;971:20;996:30;971:20;996:30;:::i;:::-;8755:515;;;;-1:-1;8755:515;;-1:-1;;8755:515::o;12241:323::-;;12373:5;37832:12;38647:6;38642:3;38635:19;12456:52;12501:6;38684:4;38679:3;38675:14;38684:4;12482:5;12478:16;12456:52;:::i;:::-;37320:9;42605:14;-1:-1;;42601:28;12520:39;;;;38684:4;12520:39;;12321:243;-1:-1;;12321:243::o;20773:291::-;;42188:6;42183:3;42178;42165:30;42226:16;;42219:27;;;42226:16;20917:147;-1:-1;20917:147::o;21071:271::-;;12731:5;37832:12;12842:52;12887:6;12882:3;12875:4;12868:5;12864:16;12842:52;:::i;:::-;12906:16;;;;;21205:137;-1:-1;;21205:137::o;21349:222::-;-1:-1;;;;;40262:54;;;;9865:37;;21476:2;21461:18;;21447:124::o;21578:444::-;-1:-1;;;;;40262:54;;;9865:37;;40262:54;;;;21925:2;21910:18;;9865:37;22008:2;21993:18;;11851:37;;;;21761:2;21746:18;;21732:290::o;22029:884::-;-1:-1;;;;;40262:54;;;9865:37;;40262:54;;;;22485:2;22470:18;;9865:37;22568:2;22553:18;;11851:37;;;;22651:2;22636:18;;11851:37;;;;40581:4;40570:16;22730:3;22715:19;;20726:35;40273:42;22799:19;;11851:37;22898:3;22883:19;;11851:37;;;;22320:3;22305:19;;22291:622::o;22920:333::-;-1:-1;;;;;40262:54;;;;9865:37;;23239:2;23224:18;;11851:37;23075:2;23060:18;;23046:207::o;23260:653::-;23527:2;23541:47;;;37832:12;;23512:18;;;38635:19;;;23260:653;;38684:4;;38675:14;;;;37522;;;23260:653;10332:251;10357:6;10354:1;10351:13;10332:251;;;10418:13;;39549;39542:21;11623:34;;9419:14;;;;38369;;;;10379:1;10372:9;10332:251;;;10336:14;;;23752:9;23746:4;23742:20;38684:4;23726:9;23722:18;23715:48;23777:126;10860:5;37832:12;10879:95;10967:6;10962:3;10879:95;:::i;:::-;10872:102;;;;;38684:4;11031:6;11027:17;11022:3;11018:27;38684:4;11125:5;37522:14;-1:-1;11164:357;11189:6;11186:1;11183:13;11164:357;;;11251:9;11245:4;11241:20;11236:3;11229:33;9567:64;9627:3;11296:6;11290:13;9567:64;:::i;:::-;11500:14;;;;11310:90;-1:-1;38369:14;;;;10379:1;11204:9;11164:357;;;-1:-1;23769:134;;23498:415;-1:-1;;;;;;;;;23498:415::o;24715:310::-;;24862:2;24883:17;24876:47;24937:78;24862:2;24851:9;24847:18;25001:6;24937:78;:::i;25032:416::-;25232:2;25246:47;;;14286:2;25217:18;;;38635:19;-1:-1;;;38675:14;;;14302:44;14365:12;;;25203:245::o;25455:416::-;25655:2;25669:47;;;14616:2;25640:18;;;38635:19;-1:-1;;;38675:14;;;14632:34;14685:12;;;25626:245::o;25878:416::-;26078:2;26092:47;;;14936:2;26063:18;;;38635:19;14972:30;38675:14;;;14952:51;15022:12;;;26049:245::o;26301:416::-;26501:2;26515:47;;;15273:2;26486:18;;;38635:19;15309:34;38675:14;;;15289:55;-1:-1;;;15364:12;;;15357:25;15401:12;;;26472:245::o;26724:416::-;26924:2;26938:47;;;15652:2;26909:18;;;38635:19;-1:-1;;;38675:14;;;15668:44;15731:12;;;26895:245::o;27147:416::-;27347:2;27361:47;;;15982:2;27332:18;;;38635:19;16018:34;38675:14;;;15998:55;-1:-1;;;16073:12;;;16066:33;16118:12;;;27318:245::o;27570:416::-;27770:2;27784:47;;;16369:2;27755:18;;;38635:19;16405:30;38675:14;;;16385:51;16455:12;;;27741:245::o;27993:416::-;28193:2;28207:47;;;16706:2;28178:18;;;38635:19;16742:26;38675:14;;;16722:47;16788:12;;;28164:245::o;28416:416::-;28616:2;28630:47;;;28601:18;;;38635:19;17075:34;38675:14;;;17055:55;17129:12;;;28587:245::o;28839:416::-;29039:2;29053:47;;;29024:18;;;38635:19;17416:34;38675:14;;;17396:55;17470:12;;;29010:245::o;29262:416::-;29462:2;29476:47;;;17721:2;29447:18;;;38635:19;17757:29;38675:14;;;17737:50;17806:12;;;29433:245::o;29685:416::-;29885:2;29899:47;;;18057:2;29870:18;;;38635:19;18093:31;38675:14;;;18073:52;18144:12;;;29856:245::o;30108:416::-;30308:2;30322:47;;;18395:2;30293:18;;;38635:19;18431:34;38675:14;;;18411:55;-1:-1;;;18486:12;;;18479:28;18526:12;;;30279:245::o;30531:416::-;30731:2;30745:47;;;30716:18;;;38635:19;18813:34;38675:14;;;18793:55;18867:12;;;30702:245::o;30954:416::-;31154:2;31168:47;;;19118:2;31139:18;;;38635:19;19154:26;38675:14;;;19134:47;19200:12;;;31125:245::o;31377:326::-;19512:23;;-1:-1;;;;;40142:46;20013:37;;19693:4;19682:16;;;19676:23;-1:-1;;;;;40468:30;;;19751:14;;;20494:36;;;;19851:4;19840:16;;;19834:23;40468:30;19909:14;;;20494:36;;;;31556:2;31541:18;;31527:176::o;31710:436::-;-1:-1;;;;;40142:46;;;;20013:37;;-1:-1;;;;;40468:30;;;32051:2;32036:18;;20494:36;40468:30;32132:2;32117:18;;20494:36;31889:2;31874:18;;31860:286::o;32153:222::-;11851:37;;;32280:2;32265:18;;32251:124::o;32382:716::-;11851:37;;;-1:-1;;;;;40262:54;;;32818:2;32803:18;;9724:58;40262:54;;;;32901:2;32886:18;;9865:37;32992:2;32977:18;;13637:58;;;;33083:3;33068:19;;13637:58;32645:3;32630:19;;32616:482::o;35194:321::-;11851:37;;;39549:13;39542:21;35501:2;35486:18;;11623:34;35343:2;35328:18;;35314:201::o;35522:329::-;11851:37;;;35837:2;35822:18;;11851:37;35675:2;35660:18;;35646:205::o;35858:440::-;-1:-1;;;;;40468:30;;;;20494:36;;36201:2;36186:18;;11851:37;;;;-1:-1;;;;;40142:46;36284:2;36269:18;;20253:50;36039:2;36024:18;;36010:288::o;36305:506::-;;;36440:11;36427:25;36491:48;;36515:8;36499:14;36495:29;36491:48;36471:18;36467:73;36457:2;;-1:-1;;36544:12;36457:2;36571:33;;36625:18;;;-1:-1;;;;;;36652:30;;36649:2;;;-1:-1;;36685:12;36649:2;36530:4;36713:13;;-1:-1;36499:14;36745:38;;;36735:49;;36732:2;;;36797:1;;36787:12;42261:268;42326:1;42333:101;42347:6;42344:1;42341:13;42333:101;;;42414:11;;;42408:18;42395:11;;;42388:39;42369:2;42362:10;42333:101;;;42449:6;42446:1;42443:13;42440:2;;;-1:-1;;42326:1;42496:16;;42489:27;42310:219::o;42642:117::-;-1:-1;;;;;40262:54;;42701:35;;42691:2;;42750:1;;42740:12;42691:2;42685:74;:::o;42766:111::-;42847:5;39549:13;39542:21;42825:5;42822:32;42812:2;;42868:1;;42858:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2217400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "PICHI()": "infinite",
                "add(uint256,address,address)": "infinite",
                "batch(bytes[],bool)": "infinite",
                "claimOwnership()": "45067",
                "deposit(uint256,uint256,address)": "infinite",
                "emergencyWithdraw(uint256,address)": "infinite",
                "harvest(uint256,address)": "infinite",
                "lpToken(uint256)": "2084",
                "massUpdatePools(uint256[])": "infinite",
                "migrate(uint256)": "infinite",
                "migrator()": "1160",
                "owner()": "1159",
                "pendingOwner()": "1158",
                "pendingPichi(uint256,address)": "infinite",
                "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "pichiPerSecond()": "1139",
                "poolInfo(uint256)": "2233",
                "poolLength()": "1119",
                "rewarder(uint256)": "2127",
                "set(uint256,uint256,address,bool)": "infinite",
                "setMigrator(address)": "22051",
                "setPichiPerSecond(uint256)": "22212",
                "totalAllocPoint()": "1118",
                "transferOwnership(address,bool,bool)": "infinite",
                "updatePool(uint256)": "infinite",
                "userInfo(uint256,address)": "2227",
                "withdraw(uint256,uint256,address)": "infinite",
                "withdrawAndHarvest(uint256,uint256,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "PICHI()": "e7d77cba",
              "add(uint256,address,address)": "ab7de098",
              "batch(bytes[],bool)": "d2423b51",
              "claimOwnership()": "4e71e0c8",
              "deposit(uint256,uint256,address)": "8dbdbe6d",
              "emergencyWithdraw(uint256,address)": "2f940c70",
              "harvest(uint256,address)": "18fccc76",
              "lpToken(uint256)": "78ed5d1f",
              "massUpdatePools(uint256[])": "57a5b58c",
              "migrate(uint256)": "454b0608",
              "migrator()": "7cd07e47",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "pendingPichi(uint256,address)": "86f227f5",
              "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "7c516e94",
              "pichiPerSecond()": "58b84f4d",
              "poolInfo(uint256)": "1526fe27",
              "poolLength()": "081e3eda",
              "rewarder(uint256)": "c346253d",
              "set(uint256,uint256,address,bool)": "88bba42f",
              "setMigrator(address)": "23cf3118",
              "setPichiPerSecond(uint256)": "033ce5c1",
              "totalAllocPoint()": "17caf6f1",
              "transferOwnership(address,bool,bool)": "078dfbe7",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b",
              "withdraw(uint256,uint256,address)": "0ad58d2f",
              "withdrawAndHarvest(uint256,uint256,address)": "d1abb907"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_pichi\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Harvest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pichiPerSecond\",\"type\":\"uint256\"}],\"name\":\"LogPichiPerSecond\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"}],\"name\":\"LogPoolAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"LogSetPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accPichiPerShare\",\"type\":\"uint256\"}],\"name\":\"LogUpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PICHI\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"successes\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"harvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lpToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingPichi\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"permitToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pichiPerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accPichiPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rewarder\",\"outputs\":[{\"internalType\":\"contract IRewarder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"_migrator\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pichiPerSecond\",\"type\":\"uint256\"}],\"name\":\"setPichiPerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accPichiPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct MiniChefV2.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"rewardDebt\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAndHarvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The (older) MasterChef contract gives out a constant number of PICHI tokens per block. It is the only address with minting rights for PICHI. The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token that is deposited into the MasterChef V1 (MCV1) contract. The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\",\"kind\":\"dev\",\"methods\":{\"add(uint256,address,address)\":{\"details\":\"Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.\",\"params\":{\"_lpToken\":\"Address of the LP ERC-20 token.\",\"_rewarder\":\"Address of the rewarder delegate.\",\"allocPoint\":\"AP of the new pool.\"}},\"constructor\":{\"params\":{\"_pichi\":\"The PICHI token contract address.\"}},\"deposit(uint256,uint256,address)\":{\"details\":\"Deposit LP tokens to MCV2 for PICHI allocation.\",\"params\":{\"amount\":\"LP token amount to deposit.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"The receiver of `amount` deposit benefit.\"}},\"emergencyWithdraw(uint256,address)\":{\"details\":\"Withdraw without caring about rewards. EMERGENCY ONLY.\",\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"harvest(uint256,address)\":{\"details\":\"Harvest proceeds for transaction sender to `to`.\",\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of PICHI rewards.\"}},\"massUpdatePools(uint256[])\":{\"details\":\"Update reward variables for all pools. Be careful of gas spending!\",\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"migrate(uint256)\":{\"details\":\"Migrate LP token to another LP contract through the `migrator` contract.\",\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"pendingPichi(uint256,address)\":{\"details\":\"View function to see pending PICHI on frontend.\",\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"PICHI reward for a given user.\"}},\"poolLength()\":{\"details\":\"Returns the number of MCV2 pools.\"},\"set(uint256,uint256,address,bool)\":{\"details\":\"Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\",\"params\":{\"_allocPoint\":\"New AP of the pool.\",\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_rewarder\":\"Address of the rewarder delegate.\",\"overwrite\":\"True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\"}},\"setMigrator(address)\":{\"details\":\"Set the `migrator` contract. Can only be called by the owner.\",\"params\":{\"_migrator\":\"The contract address to set.\"}},\"setPichiPerSecond(uint256)\":{\"details\":\"Sets the pichi per second to be distributed. Can only be called by the owner.\",\"params\":{\"_pichiPerSecond\":\"The amount of Pichi to be distributed per second.\"}},\"updatePool(uint256)\":{\"details\":\"Update reward variables of the given pool.\",\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}},\"withdraw(uint256,uint256,address)\":{\"details\":\"Withdraw LP tokens from MCV2.\",\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"withdrawAndHarvest(uint256,uint256,address)\":{\"details\":\"Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\",\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens and PICHI rewards.\"}}},\"stateVariables\":{\"PICHI\":{\"details\":\"Address of PICHI contract.\"},\"lpToken\":{\"details\":\"Address of the LP token for each MCV2 pool.\"},\"poolInfo\":{\"details\":\"Info of each MCV2 pool.\"},\"rewarder\":{\"details\":\"Address of each `IRewarder` contract in MCV2.\"},\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"},\"userInfo\":{\"details\":\"Info of each user that stakes LP tokens.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MiniChefV2.sol\":\"MiniChefV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/MiniChefV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IMasterChef.sol\\\";\\n\\ninterface IMigratorChef {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\\n/// It is the only address with minting rights for PICHI.\\n/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the MasterChef V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract MiniChefV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @dev Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of PICHI entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @dev Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of PICHI to distribute per block.\\n    struct PoolInfo {\\n        uint128 accPichiPerShare;\\n        uint64 lastRewardTime;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @dev Address of PICHI contract.\\n    IERC20 public immutable PICHI;\\n    // @dev The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorChef public migrator;\\n\\n    /// @dev Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @dev Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @dev Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @dev Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 public pichiPerSecond;\\n    uint256 private constant ACC_PICHI_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accPichiPerShare);\\n    event LogPichiPerSecond(uint256 pichiPerSecond);\\n\\n    /// @param _pichi The PICHI token contract address.\\n    constructor(IERC20 _pichi) public {\\n        PICHI = _pichi;\\n    }\\n\\n    /// @dev Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardTime: block.timestamp.to64(),\\n            accPichiPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @dev Sets the pichi per second to be distributed. Can only be called by the owner.\\n    /// @param _pichiPerSecond The amount of Pichi to be distributed per second.\\n    function setPichiPerSecond(uint256 _pichiPerSecond) public onlyOwner {\\n        pichiPerSecond = _pichiPerSecond;\\n        emit LogPichiPerSecond(_pichiPerSecond);\\n    }\\n\\n    /// @dev Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @dev Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"MasterChefV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"MasterChefV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @dev View function to see pending PICHI on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending PICHI reward for a given user.\\n    function pendingPichi(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accPichiPerShare = pool.accPichiPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n            uint256 pichiReward = time.mul(pichiPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accPichiPerShare) / ACC_PICHI_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @dev Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.timestamp > pool.lastRewardTime) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n                uint256 pichiReward = time.mul(pichiPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardTime = block.timestamp.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accPichiPerShare);\\n        }\\n    }\\n\\n    /// @dev Deposit LP tokens to MCV2 for PICHI allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n        \\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of PICHI rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi;\\n\\n        // Interactions\\n        if (_pendingPichi != 0) {\\n            PICHI.safeTransfer(to, _pendingPichi);\\n        }\\n        \\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward( pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n    \\n    /// @dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and PICHI rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n        \\n        // Interactions\\n        PICHI.safeTransfer(to, _pendingPichi);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n\\n    /// @dev Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xe120391e11a2c7784ec2c988a3af8cbd8c33d5738728987074dfc91dc521aed7\",\"license\":\"MIT\"},\"contracts/interfaces/IMasterChef.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IMasterChef {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount; // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken; // Address of LP token contract.\\n        uint256 allocPoint; // How many allocation points assigned to this pool. PICHI to distribute per block.\\n        uint256 lastRewardBlock; // Last block number that PICHI distribution occurs.\\n        uint256 accPichiPerShare; // Accumulated PICHI per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);\\n\\n    function totalAllocPoint() external view returns (uint256);\\n\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0x2ade0f4bcab4f5537b20ae75ba2099f507b6c620bb81427cf4e687fd057216e1\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 private constant _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\\n\",\"keccak256\":\"0x42b350cf39c1685e9a37835d6e6fb66e27362ccdf38a165f5030c2eb8bccc938\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 2142,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "migrator",
                "offset": 0,
                "slot": "2",
                "type": "t_contract(IMigratorChef)2108"
              },
              {
                "astId": 2146,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "poolInfo",
                "offset": 0,
                "slot": "3",
                "type": "t_array(t_struct(PoolInfo)2137_storage)dyn_storage"
              },
              {
                "astId": 2150,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "lpToken",
                "offset": 0,
                "slot": "4",
                "type": "t_array(t_contract(IERC20)337)dyn_storage"
              },
              {
                "astId": 2154,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "rewarder",
                "offset": 0,
                "slot": "5",
                "type": "t_array(t_contract(IRewarder)3320)dyn_storage"
              },
              {
                "astId": 2161,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "userInfo",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)2130_storage))"
              },
              {
                "astId": 2164,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "totalAllocPoint",
                "offset": 0,
                "slot": "7",
                "type": "t_uint256"
              },
              {
                "astId": 2166,
                "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                "label": "pichiPerSecond",
                "offset": 0,
                "slot": "8",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_contract(IERC20)337)dyn_storage": {
                "base": "t_contract(IERC20)337",
                "encoding": "dynamic_array",
                "label": "contract IERC20[]",
                "numberOfBytes": "32"
              },
              "t_array(t_contract(IRewarder)3320)dyn_storage": {
                "base": "t_contract(IRewarder)3320",
                "encoding": "dynamic_array",
                "label": "contract IRewarder[]",
                "numberOfBytes": "32"
              },
              "t_array(t_struct(PoolInfo)2137_storage)dyn_storage": {
                "base": "t_struct(PoolInfo)2137_storage",
                "encoding": "dynamic_array",
                "label": "struct MiniChefV2.PoolInfo[]",
                "numberOfBytes": "32"
              },
              "t_contract(IERC20)337": {
                "encoding": "inplace",
                "label": "contract IERC20",
                "numberOfBytes": "20"
              },
              "t_contract(IMigratorChef)2108": {
                "encoding": "inplace",
                "label": "contract IMigratorChef",
                "numberOfBytes": "20"
              },
              "t_contract(IRewarder)3320": {
                "encoding": "inplace",
                "label": "contract IRewarder",
                "numberOfBytes": "20"
              },
              "t_int256": {
                "encoding": "inplace",
                "label": "int256",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_struct(UserInfo)2130_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct MiniChefV2.UserInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(UserInfo)2130_storage"
              },
              "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)2130_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_struct(UserInfo)2130_storage)"
              },
              "t_struct(PoolInfo)2137_storage": {
                "encoding": "inplace",
                "label": "struct MiniChefV2.PoolInfo",
                "members": [
                  {
                    "astId": 2132,
                    "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                    "label": "accPichiPerShare",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 2134,
                    "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                    "label": "lastRewardTime",
                    "offset": 16,
                    "slot": "0",
                    "type": "t_uint64"
                  },
                  {
                    "astId": 2136,
                    "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                    "label": "allocPoint",
                    "offset": 24,
                    "slot": "0",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(UserInfo)2130_storage": {
                "encoding": "inplace",
                "label": "struct MiniChefV2.UserInfo",
                "members": [
                  {
                    "astId": 2127,
                    "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                    "label": "amount",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 2129,
                    "contract": "contracts/MiniChefV2.sol:MiniChefV2",
                    "label": "rewardDebt",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_int256"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/interfaces/IMasterChef.sol": {
        "IMasterChef": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "contract IERC20",
                      "name": "lpToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "allocPoint",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "lastRewardBlock",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accPichiPerShare",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IMasterChef.PoolInfo",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAllocPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "deposit(uint256,uint256)": "e2bbb158",
              "poolInfo(uint256)": "1526fe27",
              "totalAllocPoint()": "17caf6f1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accPichiPerShare\",\"type\":\"uint256\"}],\"internalType\":\"struct IMasterChef.PoolInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMasterChef.sol\":\"IMasterChef\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IMasterChef.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IMasterChef {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount; // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken; // Address of LP token contract.\\n        uint256 allocPoint; // How many allocation points assigned to this pool. PICHI to distribute per block.\\n        uint256 lastRewardBlock; // Last block number that PICHI distribution occurs.\\n        uint256 accPichiPerShare; // Accumulated PICHI per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);\\n\\n    function totalAllocPoint() external view returns (uint256);\\n\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0x2ade0f4bcab4f5537b20ae75ba2099f507b6c620bb81427cf4e687fd057216e1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/interfaces/IRewarder.sol": {
        "IRewarder": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "pichiAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "newLpAmount",
                  "type": "uint256"
                }
              ],
              "name": "onPichiReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "pichiAmount",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "onPichiReward(uint256,address,address,uint256,uint256)": "ad3b6836",
              "pendingTokens(uint256,address,uint256)": "d63b3c49"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pichiAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newLpAmount\",\"type\":\"uint256\"}],\"name\":\"onPichiReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pichiAmount\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IRewarder.sol\":\"IRewarder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "SignedSafeMath": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093089ad0ab90ede60aaa13423328831c766257f96db8e5cf62228b466cdd2b3a64736f6c634300060c0033",
              "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 SWAP4 ADDMOD SWAP11 0xD0 0xAB SWAP1 0xED 0xE6 EXP 0xAA SGT TIMESTAMP CALLER 0x28 DUP4 SHR PUSH23 0x6257F96DB8E5CF62228B466CDD2B3A64736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "58:2636:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093089ad0ab90ede60aaa13423328831c766257f96db8e5cf62228b466cdd2b3a64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 ADDMOD SWAP11 0xD0 0xAB SWAP1 0xED 0xE6 EXP 0xAA SGT TIMESTAMP CALLER 0x28 DUP4 SHR PUSH23 0x6257F96DB8E5CF62228B466CDD2B3A64736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "58:2636:9:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(int256,int256)": "infinite",
                "div(int256,int256)": "infinite",
                "mul(int256,int256)": "infinite",
                "sub(int256,int256)": "infinite",
                "toUInt256(int256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 private constant _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\\n\",\"keccak256\":\"0x42b350cf39c1685e9a37835d6e6fb66e27362ccdf38a165f5030c2eb8bccc938\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/mocks/ComplexRewarder.sol": {
        "ComplexRewarder": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_rewardToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_tokenPerBlock",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_MASTERCHEF_V2",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "LogInit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "LogOnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "LogPoolAddition",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "LogSetPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardBlock",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accPichiPerShare",
                  "type": "uint256"
                }
              ],
              "name": "LogUpdatePool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "add",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "lpToken",
                  "type": "uint256"
                }
              ],
              "name": "onPichiReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolIds",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accPichiPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardBlock",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "set",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "tokenPerBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accPichiPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardBlock",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct ComplexRewarder.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardDebt",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "@0xKeno",
            "kind": "dev",
            "methods": {
              "add(uint256,uint256)": {
                "details": "Add a new LP to the pool.  Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.",
                "params": {
                  "_pid": "Pid on MCV2",
                  "allocPoint": "AP of the new pool."
                }
              },
              "massUpdatePools(uint256[])": {
                "details": "Update reward variables for all pools. Be careful of gas spending!",
                "params": {
                  "pids": "Pool IDs of all to be updated. Make sure to update all active pools."
                }
              },
              "pendingToken(uint256,address)": {
                "details": "View function to see pending Token",
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_user": "Address of user."
                },
                "returns": {
                  "pending": "PICHI reward for a given user."
                }
              },
              "poolLength()": {
                "details": "Returns the number of MCV2 pools."
              },
              "set(uint256,uint256)": {
                "details": "Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.",
                "params": {
                  "_allocPoint": "New AP of the pool.",
                  "_pid": "The index of the pool. See `poolInfo`."
                }
              },
              "updatePool(uint256)": {
                "details": "Update reward variables of the given pool.",
                "params": {
                  "pid": "The index of the pool. See `poolInfo`."
                },
                "returns": {
                  "pool": "Returns the pool that was updated."
                }
              }
            },
            "stateVariables": {
              "poolInfo": {
                "details": "Info of each pool."
              },
              "totalAllocPoint": {
                "details": "Total allocation points. Must be the sum of all allocation points in all pools."
              },
              "userInfo": {
                "details": "Info of each user that stakes LP tokens."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b50604051620018c8380380620018c8833981016040819052620000349162000099565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606093841b811660805260069290925590911b1660a052620000f9565b600080600060608486031215620000ae578283fd5b8351620000bb81620000e0565b602085015160408601519194509250620000d581620000e0565b809150509250925092565b6001600160a01b0381168114620000f657600080fd5b50565b60805160601c60a05160601c61178c6200013c600039806104fb5280610590528061082a52806108bf5280610cd7525080610d885280610e5d525061178c6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806357a5b58c1161009757806393f1a40b1161006657806393f1a40b146101fe578063ad3b68361461021f578063d63b3c4914610232578063e30c39781461025357610100565b806357a5b58c146101b057806369883b4e146101c3578063771602f7146101d65780638da5cb5b146101e957610100565b80634198709a116100d35780634198709a1461016d57806348e43af4146101755780634e71e0c81461018857806351eb05a61461019057610100565b8063078dfbe714610105578063081e3eda1461011a5780631526fe27146101385780631ab06ee51461015a575b600080fd5b610118610113366004611119565b61025b565b005b61012261034a565b60405161012f91906116ef565b60405180910390f35b61014b610146366004611210565b610350565b60405161012f939291906116c5565b6101186101683660046112f7565b610387565b610122610466565b610122610183366004611240565b61046c565b6101186106fa565b6101a361019e366004611210565b610787565b60405161012f919061168c565b6101186101be366004611163565b610aaf565b6101226101d1366004611210565b610ae5565b6101186101e43660046112f7565b610b03565b6101f1610c99565b60405161012f9190611359565b61021161020c366004611240565b610ca8565b60405161012f9291906116f8565b61011861022d36600461126f565b610ccc565b6102456102403660046112c0565b610e35565b60405161012f929190611386565b6101f1610ef4565b6000546001600160a01b0316331461028e5760405162461bcd60e51b8152600401610285906115b4565b60405180910390fd5b8115610329576001600160a01b0383161515806102a85750805b6102c45760405162461bcd60e51b8152600401610285906114ea565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610345565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103b15760405162461bcd60e51b8152600401610285906115b4565b6000828152600260205260409020546005546103e89183916103e291600160c01b90046001600160401b0316610f03565b90610f2c565b6005556103f481610f4f565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c9061045a9084906116ef565b60405180910390a25050565b60065481565b60006104766110f9565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610530918b91016116ef565b60206040518083038186803b15801561054857600080fd5b505afa15801561055c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058091906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105cb9190611359565b60206040518083038186803b1580156105e357600080fd5b505afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190611228565b905083602001516001600160401b03164311801561063857508015155b156106c457600061065f85602001516001600160401b031643610f0390919063ffffffff16565b9050600060055461069287604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b90610f7c565b8161069957fe5b0490506106bf836106af8364e8d4a51000610f7c565b816106b657fe5b86919004610f2c565b935050505b600183015483546106ef919064e8d4a51000906106e19086610f7c565b816106e857fe5b0490610f03565b979650505050505050565b6001546001600160a01b03163381146107255760405162461bcd60e51b8152600401610285906115e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61078f6110f9565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b90910416928101929092526107fb5760405162461bcd60e51b815260040161028590611519565b80602001516001600160401b0316431115610aaa576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061085f9086906004016116ef565b60206040518083038186803b15801561087757600080fd5b505afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108fa9190611359565b60206040518083038186803b15801561091257600080fd5b505afa158015610926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094a9190611228565b905080156109ed57600061097483602001516001600160401b031643610f0390919063ffffffff16565b905060006005546109a185604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b816109a857fe5b0490506109df6109ce846109c18464e8d4a51000610f7c565b816109c857fe5b04610fb3565b85516001600160801b031690610fdc565b6001600160801b0316845250505b6109f643610f4f565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610aa09290918691611706565b60405180910390a2505b919050565b8060005b81811015610adf57610ad6848483818110610aca57fe5b90506020020135610787565b50600101610ab3565b50505050565b60038181548110610af257fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610285906115b4565b600081815260026020526040902054600160801b90046001600160401b031615610b695760405162461bcd60e51b815260040161028590611445565b6005544390610b789084610f2c565b60055560408051606081019091526000815260208101610b9783610f4f565b6001600160401b03168152602001610bae85610f4f565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610c8c9086906116ef565b60405180910390a2505050565b6000546001600160a01b031681565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d145760405162461bcd60e51b8152600401610285906114a9565b610d1c6110f9565b610d2586610787565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610daf57600182015483518354610d79929164e8d4a51000916106e1916001600160801b0316610f7c565b9050610daf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016878361100b565b838255825164e8d4a5100090610dcf9086906001600160801b0316610f7c565b81610dd657fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e2391906116ef565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e8957fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610ed0878761046c565b81600081518110610edd57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f265760405162461bcd60e51b815260040161028590611416565b92915050565b81810181811015610f265760405162461bcd60e51b81526004016102859061157d565b60006001600160401b03821115610f785760405162461bcd60e51b81526004016102859061161e565b5090565b6000811580610f9757505080820282828281610f9457fe5b04145b610f265760405162461bcd60e51b815260040161028590611655565b60006001600160801b03821115610f785760405162461bcd60e51b815260040161028590611546565b8181016001600160801b038083169082161015610f265760405162461bcd60e51b81526004016102859061157d565b60006060846001600160a01b031663a9059cbb858560405160240161103192919061136d565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161106a9190611320565b6000604051808303816000865af19150503d80600081146110a7576040519150601f19603f3d011682016040523d82523d6000602084013e6110ac565b606091505b50915091508180156110d65750805115806110d65750808060200190518101906110d691906111d1565b6110f25760405162461bcd60e51b815260040161028590611472565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561112d578283fd5b833561113881611730565b9250602084013561114881611748565b9150604084013561115881611748565b809150509250925092565b60008060208385031215611175578182fd5b82356001600160401b038082111561118b578384fd5b818501915085601f83011261119e578384fd5b8135818111156111ac578485fd5b86602080830285010111156111bf578485fd5b60209290920196919550909350505050565b6000602082840312156111e2578081fd5b81516111ed81611748565b9392505050565b600060208284031215611205578081fd5b81516111ed81611730565b600060208284031215611221578081fd5b5035919050565b600060208284031215611239578081fd5b5051919050565b60008060408385031215611252578182fd5b82359150602083013561126481611730565b809150509250929050565b600080600080600060a08688031215611286578081fd5b85359450602086013561129881611730565b935060408601356112a881611730565b94979396509394606081013594506080013592915050565b6000806000606084860312156112d4578283fd5b8335925060208401356112e681611730565b929592945050506040919091013590565b60008060408385031215611309578182fd5b50508035926020909101359150565b815260200190565b60008251815b818110156113405760208186018101518583015201611326565b8181111561134e5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156113c85781516001600160a01b0316845292840192908401906001016113a3565b505050838103828501528085516113df81846116ef565b91508387019250845b81811015611409576113fb838551611318565b9385019392506001016113e8565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b602080825260139082015272141bdbdb08191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461174557600080fd5b50565b801515811461174557600080fdfea26469706673582212203b065f01d718b709a1296041aa0df124736d80d2e3284a8941b9c60aa9b1fa0564736f6c634300060c0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18C8 CODESIZE SUB DUP1 PUSH3 0x18C8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x99 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE PUSH1 0x6 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH3 0xF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xAE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xBB DUP2 PUSH3 0xE0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH3 0xD5 DUP2 PUSH3 0xE0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x178C PUSH3 0x13C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x4FB MSTORE DUP1 PUSH2 0x590 MSTORE DUP1 PUSH2 0x82A MSTORE DUP1 PUSH2 0x8BF MSTORE DUP1 PUSH2 0xCD7 MSTORE POP DUP1 PUSH2 0xD88 MSTORE DUP1 PUSH2 0xE5D MSTORE POP PUSH2 0x178C 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 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57A5B58C GT PUSH2 0x97 JUMPI DUP1 PUSH4 0x93F1A40B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xAD3B6836 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x253 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x69883B4E EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x771602F7 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1E9 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x4198709A GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x4198709A EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x48E43AF4 EQ PUSH2 0x175 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x190 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x1AB06EE5 EQ PUSH2 0x15A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1119 JUMP JUMPDEST PUSH2 0x25B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x122 PUSH2 0x34A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x350 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x466 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x183 CALLDATASIZE PUSH1 0x4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0x46C JUMP JUMPDEST PUSH2 0x118 PUSH2 0x6FA JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x19E CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x787 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x168C JUMP JUMPDEST PUSH2 0x118 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1163 JUMP JUMPDEST PUSH2 0xAAF JUMP JUMPDEST PUSH2 0x122 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xAE5 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0xB03 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x211 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP3 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0xCCC JUMP JUMPDEST PUSH2 0x245 PUSH2 0x240 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0xE35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP3 SWAP2 SWAP1 PUSH2 0x1386 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0xEF4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x28E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x329 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x2A8 JUMPI POP DUP1 JUMPDEST PUSH2 0x2C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x14EA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x345 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH2 0x3E8 SWAP2 DUP4 SWAP2 PUSH2 0x3E2 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF03 JUMP JUMPDEST SWAP1 PUSH2 0xF2C JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x3F4 DUP2 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x942CC7E17A17C164BD977F32AB8C54265D5B9D481E4E352BF874F1E568874E7C SWAP1 PUSH2 0x45A SWAP1 DUP5 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x476 PUSH2 0x10F9 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE DUP8 DUP6 MSTORE PUSH1 0x4 DUP1 DUP6 MSTORE DUP4 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP9 MSTORE SWAP6 MSTORE DUP4 DUP7 KECCAK256 DUP4 MLOAD SWAP5 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP1 SWAP6 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x78ED5D1F SWAP2 PUSH2 0x530 SWAP2 DUP12 SWAP2 ADD PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x580 SWAP2 SWAP1 PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x61B SWAP2 SWAP1 PUSH2 0x1228 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT DUP1 ISZERO PUSH2 0x638 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 PUSH2 0x65F DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0xF03 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x692 DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x68C PUSH1 0x6 SLOAD DUP7 PUSH2 0xF7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x699 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x6BF DUP4 PUSH2 0x6AF DUP4 PUSH5 0xE8D4A51000 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x6B6 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0xF2C JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x6EF SWAP2 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6E1 SWAP1 DUP7 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x6E8 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF03 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x725 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15E9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x78F PUSH2 0x10F9 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x7FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1519 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT ISZERO PUSH2 0xAAA JUMPI PUSH1 0x40 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x78ED5D1F SWAP1 PUSH2 0x85F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AF SWAP2 SWAP1 PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8FA SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x912 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x94A SWAP2 SWAP1 PUSH2 0x1228 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9ED JUMPI PUSH1 0x0 PUSH2 0x974 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0xF03 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x9A1 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x68C PUSH1 0x6 SLOAD DUP7 PUSH2 0xF7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x9A8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x9DF PUSH2 0x9CE DUP5 PUSH2 0x9C1 DUP5 PUSH5 0xE8D4A51000 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x9C8 JUMPI INVALID JUMPDEST DIV PUSH2 0xFB3 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0xFDC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x9F6 NUMBER PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP5 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 MLOAD DUP4 DUP9 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP9 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP6 SWAP1 SWAP7 AND SWAP5 SWAP1 SWAP5 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0xAA0 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH2 0xAD6 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xACA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x787 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xAB3 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xAF2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x5 SLOAD NUMBER SWAP1 PUSH2 0xB78 SWAP1 DUP5 PUSH2 0xF2C JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0xB97 DUP4 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBAE DUP6 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 DUP8 ADD MLOAD SWAP7 DUP4 ADD MLOAD DUP7 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP8 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR AND SWAP3 SWAP1 SWAP3 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x38410508059921573AB9EBDCA2A5034BE738D236366B8F32DE4434EA95ED3C81 SWAP1 PUSH2 0xC8C SWAP1 DUP7 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xD14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x14A9 JUMP JUMPDEST PUSH2 0xD1C PUSH2 0x10F9 JUMP JUMPDEST PUSH2 0xD25 DUP7 PUSH2 0x787 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 ISZERO PUSH2 0xDAF JUMPI PUSH1 0x1 DUP3 ADD SLOAD DUP4 MLOAD DUP4 SLOAD PUSH2 0xD79 SWAP3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x6E1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xF7C JUMP JUMPDEST SWAP1 POP PUSH2 0xDAF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 DUP4 PUSH2 0x100B JUMP JUMPDEST DUP4 DUP3 SSTORE DUP3 MLOAD PUSH5 0xE8D4A51000 SWAP1 PUSH2 0xDCF SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0xDD6 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ECE88CA2BC08DD018DB50E1D25A20BF1241E5FAB1C396CAA51F01A54BD2F75B DUP5 PUSH1 0x40 MLOAD PUSH2 0xE23 SWAP2 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE89 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xED0 DUP8 DUP8 PUSH2 0x46C JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEDD JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1416 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0xF78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x161E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xF97 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xF94 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1655 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0xF78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1546 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1031 SWAP3 SWAP2 SWAP1 PUSH2 0x136D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x106A SWAP2 SWAP1 PUSH2 0x1320 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x10A7 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 0x10AC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x10D6 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x10D6 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x10D6 SWAP2 SWAP1 PUSH2 0x11D1 JUMP JUMPDEST PUSH2 0x10F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1472 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x112D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1138 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1148 DUP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1158 DUP2 PUSH2 0x1748 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1175 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x118B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x119E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x11AC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x11BF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11ED DUP2 PUSH2 0x1748 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1205 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11ED DUP2 PUSH2 0x1730 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1221 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1239 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1252 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1264 DUP2 PUSH2 0x1730 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1286 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1298 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x12A8 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x12D4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1309 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1340 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x1326 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x134E JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13C8 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13A3 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x13DF DUP2 DUP5 PUSH2 0x16EF JUMP JUMPDEST SWAP2 POP DUP4 DUP8 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1409 JUMPI PUSH2 0x13FB DUP4 DUP6 MLOAD PUSH2 0x1318 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x13E8 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x506F6F6C20616C726561647920657869737473 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C79204D4356322063616E2063616C6C20746869732066756E6374696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x141BDBDB08191BD95CC81B9BDD08195E1A5CDD PUSH1 0x6A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE MOD 0x5F ADD 0xD7 XOR 0xB7 MULMOD LOG1 0x29 PUSH1 0x41 0xAA 0xD CALL 0x24 PUSH20 0x6D80D2E3284A8941B9C60AA9B1FA0564736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
              "sourceMap": "399:6867:10:-:0;;;2013:241;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;-1:-1:-1;;;;;;2141:26:10;;;;;;;;2177:13;:30;;;;2217;;;;;;399:6867;;456:563:-1;;;;619:2;607:9;598:7;594:23;590:32;587:2;;;-1:-1;;625:12;587:2;244:6;238:13;256:47;297:5;256:47;:::i;:::-;802:2;852:22;;393:13;921:2;971:22;;83:13;677:88;;-1:-1;393:13;-1:-1;101:33;83:13;101:33;:::i;:::-;929:74;;;;581:438;;;;;:::o;1443:117::-;-1:-1;;;;;1298:54;;1502:35;;1492:2;;1551:1;;1541:12;1492:2;1486:74;:::o;:::-;399:6867:10;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "3542": [
                  {
                    "length": 32,
                    "start": 3464
                  },
                  {
                    "length": 32,
                    "start": 3677
                  }
                ],
                "3579": [
                  {
                    "length": 32,
                    "start": 1275
                  },
                  {
                    "length": 32,
                    "start": 1424
                  },
                  {
                    "length": 32,
                    "start": 2090
                  },
                  {
                    "length": 32,
                    "start": 2239
                  },
                  {
                    "length": 32,
                    "start": 3287
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101005760003560e01c806357a5b58c1161009757806393f1a40b1161006657806393f1a40b146101fe578063ad3b68361461021f578063d63b3c4914610232578063e30c39781461025357610100565b806357a5b58c146101b057806369883b4e146101c3578063771602f7146101d65780638da5cb5b146101e957610100565b80634198709a116100d35780634198709a1461016d57806348e43af4146101755780634e71e0c81461018857806351eb05a61461019057610100565b8063078dfbe714610105578063081e3eda1461011a5780631526fe27146101385780631ab06ee51461015a575b600080fd5b610118610113366004611119565b61025b565b005b61012261034a565b60405161012f91906116ef565b60405180910390f35b61014b610146366004611210565b610350565b60405161012f939291906116c5565b6101186101683660046112f7565b610387565b610122610466565b610122610183366004611240565b61046c565b6101186106fa565b6101a361019e366004611210565b610787565b60405161012f919061168c565b6101186101be366004611163565b610aaf565b6101226101d1366004611210565b610ae5565b6101186101e43660046112f7565b610b03565b6101f1610c99565b60405161012f9190611359565b61021161020c366004611240565b610ca8565b60405161012f9291906116f8565b61011861022d36600461126f565b610ccc565b6102456102403660046112c0565b610e35565b60405161012f929190611386565b6101f1610ef4565b6000546001600160a01b0316331461028e5760405162461bcd60e51b8152600401610285906115b4565b60405180910390fd5b8115610329576001600160a01b0383161515806102a85750805b6102c45760405162461bcd60e51b8152600401610285906114ea565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610345565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103b15760405162461bcd60e51b8152600401610285906115b4565b6000828152600260205260409020546005546103e89183916103e291600160c01b90046001600160401b0316610f03565b90610f2c565b6005556103f481610f4f565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c9061045a9084906116ef565b60405180910390a25050565b60065481565b60006104766110f9565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610530918b91016116ef565b60206040518083038186803b15801561054857600080fd5b505afa15801561055c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058091906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105cb9190611359565b60206040518083038186803b1580156105e357600080fd5b505afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190611228565b905083602001516001600160401b03164311801561063857508015155b156106c457600061065f85602001516001600160401b031643610f0390919063ffffffff16565b9050600060055461069287604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b90610f7c565b8161069957fe5b0490506106bf836106af8364e8d4a51000610f7c565b816106b657fe5b86919004610f2c565b935050505b600183015483546106ef919064e8d4a51000906106e19086610f7c565b816106e857fe5b0490610f03565b979650505050505050565b6001546001600160a01b03163381146107255760405162461bcd60e51b8152600401610285906115e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61078f6110f9565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b90910416928101929092526107fb5760405162461bcd60e51b815260040161028590611519565b80602001516001600160401b0316431115610aaa576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061085f9086906004016116ef565b60206040518083038186803b15801561087757600080fd5b505afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108fa9190611359565b60206040518083038186803b15801561091257600080fd5b505afa158015610926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094a9190611228565b905080156109ed57600061097483602001516001600160401b031643610f0390919063ffffffff16565b905060006005546109a185604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b816109a857fe5b0490506109df6109ce846109c18464e8d4a51000610f7c565b816109c857fe5b04610fb3565b85516001600160801b031690610fdc565b6001600160801b0316845250505b6109f643610f4f565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610aa09290918691611706565b60405180910390a2505b919050565b8060005b81811015610adf57610ad6848483818110610aca57fe5b90506020020135610787565b50600101610ab3565b50505050565b60038181548110610af257fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610285906115b4565b600081815260026020526040902054600160801b90046001600160401b031615610b695760405162461bcd60e51b815260040161028590611445565b6005544390610b789084610f2c565b60055560408051606081019091526000815260208101610b9783610f4f565b6001600160401b03168152602001610bae85610f4f565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610c8c9086906116ef565b60405180910390a2505050565b6000546001600160a01b031681565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d145760405162461bcd60e51b8152600401610285906114a9565b610d1c6110f9565b610d2586610787565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610daf57600182015483518354610d79929164e8d4a51000916106e1916001600160801b0316610f7c565b9050610daf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016878361100b565b838255825164e8d4a5100090610dcf9086906001600160801b0316610f7c565b81610dd657fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e2391906116ef565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e8957fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610ed0878761046c565b81600081518110610edd57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f265760405162461bcd60e51b815260040161028590611416565b92915050565b81810181811015610f265760405162461bcd60e51b81526004016102859061157d565b60006001600160401b03821115610f785760405162461bcd60e51b81526004016102859061161e565b5090565b6000811580610f9757505080820282828281610f9457fe5b04145b610f265760405162461bcd60e51b815260040161028590611655565b60006001600160801b03821115610f785760405162461bcd60e51b815260040161028590611546565b8181016001600160801b038083169082161015610f265760405162461bcd60e51b81526004016102859061157d565b60006060846001600160a01b031663a9059cbb858560405160240161103192919061136d565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161106a9190611320565b6000604051808303816000865af19150503d80600081146110a7576040519150601f19603f3d011682016040523d82523d6000602084013e6110ac565b606091505b50915091508180156110d65750805115806110d65750808060200190518101906110d691906111d1565b6110f25760405162461bcd60e51b815260040161028590611472565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561112d578283fd5b833561113881611730565b9250602084013561114881611748565b9150604084013561115881611748565b809150509250925092565b60008060208385031215611175578182fd5b82356001600160401b038082111561118b578384fd5b818501915085601f83011261119e578384fd5b8135818111156111ac578485fd5b86602080830285010111156111bf578485fd5b60209290920196919550909350505050565b6000602082840312156111e2578081fd5b81516111ed81611748565b9392505050565b600060208284031215611205578081fd5b81516111ed81611730565b600060208284031215611221578081fd5b5035919050565b600060208284031215611239578081fd5b5051919050565b60008060408385031215611252578182fd5b82359150602083013561126481611730565b809150509250929050565b600080600080600060a08688031215611286578081fd5b85359450602086013561129881611730565b935060408601356112a881611730565b94979396509394606081013594506080013592915050565b6000806000606084860312156112d4578283fd5b8335925060208401356112e681611730565b929592945050506040919091013590565b60008060408385031215611309578182fd5b50508035926020909101359150565b815260200190565b60008251815b818110156113405760208186018101518583015201611326565b8181111561134e5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156113c85781516001600160a01b0316845292840192908401906001016113a3565b505050838103828501528085516113df81846116ef565b91508387019250845b81811015611409576113fb838551611318565b9385019392506001016113e8565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b602080825260139082015272141bdbdb08191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461174557600080fd5b50565b801515811461174557600080fdfea26469706673582212203b065f01d718b709a1296041aa0df124736d80d2e3284a8941b9c60aa9b1fa0564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57A5B58C GT PUSH2 0x97 JUMPI DUP1 PUSH4 0x93F1A40B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xAD3B6836 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x253 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x69883B4E EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x771602F7 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1E9 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x4198709A GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x4198709A EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x48E43AF4 EQ PUSH2 0x175 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x190 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x1AB06EE5 EQ PUSH2 0x15A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1119 JUMP JUMPDEST PUSH2 0x25B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x122 PUSH2 0x34A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x350 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x466 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x183 CALLDATASIZE PUSH1 0x4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0x46C JUMP JUMPDEST PUSH2 0x118 PUSH2 0x6FA JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x19E CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x787 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x168C JUMP JUMPDEST PUSH2 0x118 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1163 JUMP JUMPDEST PUSH2 0xAAF JUMP JUMPDEST PUSH2 0x122 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xAE5 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0xB03 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x211 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP3 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0xCCC JUMP JUMPDEST PUSH2 0x245 PUSH2 0x240 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0xE35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP3 SWAP2 SWAP1 PUSH2 0x1386 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0xEF4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x28E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x329 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x2A8 JUMPI POP DUP1 JUMPDEST PUSH2 0x2C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x14EA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x345 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH2 0x3E8 SWAP2 DUP4 SWAP2 PUSH2 0x3E2 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF03 JUMP JUMPDEST SWAP1 PUSH2 0xF2C JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x3F4 DUP2 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x942CC7E17A17C164BD977F32AB8C54265D5B9D481E4E352BF874F1E568874E7C SWAP1 PUSH2 0x45A SWAP1 DUP5 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x476 PUSH2 0x10F9 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE DUP8 DUP6 MSTORE PUSH1 0x4 DUP1 DUP6 MSTORE DUP4 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP9 MSTORE SWAP6 MSTORE DUP4 DUP7 KECCAK256 DUP4 MLOAD SWAP5 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP1 SWAP6 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x78ED5D1F SWAP2 PUSH2 0x530 SWAP2 DUP12 SWAP2 ADD PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x580 SWAP2 SWAP1 PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x61B SWAP2 SWAP1 PUSH2 0x1228 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT DUP1 ISZERO PUSH2 0x638 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 PUSH2 0x65F DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0xF03 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x692 DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x68C PUSH1 0x6 SLOAD DUP7 PUSH2 0xF7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x699 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x6BF DUP4 PUSH2 0x6AF DUP4 PUSH5 0xE8D4A51000 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x6B6 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0xF2C JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x6EF SWAP2 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6E1 SWAP1 DUP7 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x6E8 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF03 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x725 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15E9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x78F PUSH2 0x10F9 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x7FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1519 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT ISZERO PUSH2 0xAAA JUMPI PUSH1 0x40 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x78ED5D1F SWAP1 PUSH2 0x85F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AF SWAP2 SWAP1 PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8FA SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x912 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x94A SWAP2 SWAP1 PUSH2 0x1228 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9ED JUMPI PUSH1 0x0 PUSH2 0x974 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0xF03 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x9A1 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x68C PUSH1 0x6 SLOAD DUP7 PUSH2 0xF7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x9A8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x9DF PUSH2 0x9CE DUP5 PUSH2 0x9C1 DUP5 PUSH5 0xE8D4A51000 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x9C8 JUMPI INVALID JUMPDEST DIV PUSH2 0xFB3 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0xFDC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x9F6 NUMBER PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP5 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 MLOAD DUP4 DUP9 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP9 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP6 SWAP1 SWAP7 AND SWAP5 SWAP1 SWAP5 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0xAA0 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH2 0xAD6 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xACA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x787 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xAB3 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xAF2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x5 SLOAD NUMBER SWAP1 PUSH2 0xB78 SWAP1 DUP5 PUSH2 0xF2C JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0xB97 DUP4 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBAE DUP6 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 DUP8 ADD MLOAD SWAP7 DUP4 ADD MLOAD DUP7 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP8 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR AND SWAP3 SWAP1 SWAP3 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x38410508059921573AB9EBDCA2A5034BE738D236366B8F32DE4434EA95ED3C81 SWAP1 PUSH2 0xC8C SWAP1 DUP7 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xD14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x14A9 JUMP JUMPDEST PUSH2 0xD1C PUSH2 0x10F9 JUMP JUMPDEST PUSH2 0xD25 DUP7 PUSH2 0x787 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 ISZERO PUSH2 0xDAF JUMPI PUSH1 0x1 DUP3 ADD SLOAD DUP4 MLOAD DUP4 SLOAD PUSH2 0xD79 SWAP3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x6E1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xF7C JUMP JUMPDEST SWAP1 POP PUSH2 0xDAF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 DUP4 PUSH2 0x100B JUMP JUMPDEST DUP4 DUP3 SSTORE DUP3 MLOAD PUSH5 0xE8D4A51000 SWAP1 PUSH2 0xDCF SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0xDD6 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ECE88CA2BC08DD018DB50E1D25A20BF1241E5FAB1C396CAA51F01A54BD2F75B DUP5 PUSH1 0x40 MLOAD PUSH2 0xE23 SWAP2 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE89 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xED0 DUP8 DUP8 PUSH2 0x46C JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEDD JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1416 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0xF78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x161E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xF97 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xF94 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1655 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0xF78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1546 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1031 SWAP3 SWAP2 SWAP1 PUSH2 0x136D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x106A SWAP2 SWAP1 PUSH2 0x1320 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x10A7 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 0x10AC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x10D6 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x10D6 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x10D6 SWAP2 SWAP1 PUSH2 0x11D1 JUMP JUMPDEST PUSH2 0x10F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1472 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x112D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1138 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1148 DUP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1158 DUP2 PUSH2 0x1748 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1175 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x118B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x119E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x11AC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x11BF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11ED DUP2 PUSH2 0x1748 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1205 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11ED DUP2 PUSH2 0x1730 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1221 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1239 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1252 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1264 DUP2 PUSH2 0x1730 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1286 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1298 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x12A8 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x12D4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1309 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1340 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x1326 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x134E JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13C8 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13A3 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x13DF DUP2 DUP5 PUSH2 0x16EF JUMP JUMPDEST SWAP2 POP DUP4 DUP8 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1409 JUMPI PUSH2 0x13FB DUP4 DUP6 MLOAD PUSH2 0x1318 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x13E8 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x506F6F6C20616C726561647920657869737473 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C79204D4356322063616E2063616C6C20746869732066756E6374696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x141BDBDB08191BD95CC81B9BDD08195E1A5CDD PUSH1 0x6A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE MOD 0x5F ADD 0xD7 XOR 0xB7 MULMOD LOG1 0x29 PUSH1 0x41 0xAA 0xD CALL 0x24 PUSH20 0x6D80D2E3284A8941B9C60AA9B1FA0564736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
              "sourceMap": "399:6867:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472:1;;;;;;:::i;:::-;;:::i;:::-;;3555:97:10;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1177:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;4592:263::-;;;;;;:::i;:::-;;:::i;1506:28::-;;;:::i;5061:798::-;;;;;;:::i;:::-;;:::i;1295:348:1:-;;;:::i;6398:866:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6034:188::-;;;;;;:::i;:::-;;:::i;1228:24::-;;;;;;:::i;:::-;;:::i;3899:462::-;;;;;;:::i;:::-;;:::i;350:20:1:-;;;:::i;:::-;;;;;;;:::i;1313:64:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2260:661::-;;;;;;:::i;:::-;;:::i;2927:450::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;397:27:1:-;;;:::i;774:472::-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;;-1:-1:-1::0;;;925:68:1::1;;;;;;;:::i;:::-;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;3555:97:10:-;3631:7;:14;;3555:97::o;1177:44::-;;;;;;;;;;;;-1:-1:-1;;;;;1177:44:10;;;-1:-1:-1;;;;;;;;1177:44:10;;;;;-1:-1:-1;;;1177:44:10;;;;:::o;4592:263::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;4705:14:10::1;::::0;;;:8:::1;:14;::::0;;;;:25;4685:15:::1;::::0;:63:::1;::::0;4736:11;;4685:46:::1;::::0;-1:-1:-1;;;4705:25:10;::::1;-1:-1:-1::0;;;;;4705:25:10::1;4685:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;4667:15;:81:::0;4786:18:::1;:11:::0;:16:::1;:18::i;:::-;4758:14;::::0;;;:8:::1;:14;::::0;;;;;;:46;;-1:-1:-1;;;;;4758:46:10;;;::::1;-1:-1:-1::0;;;4758:46:10::1;-1:-1:-1::0;;;;;4758:46:10;;::::1;::::0;;;::::1;::::0;;;4819:29;4767:4;;4819:29:::1;::::0;::::1;::::0;4836:11;;4819:29:::1;:::i;:::-;;;;;;;;4592:263:::0;;:::o;1506:28::-;;;;:::o;5061:798::-;5133:15;5160:20;;:::i;:::-;-1:-1:-1;5183:14:10;;;;:8;:14;;;;;;;;5160:37;;;;;;;;;-1:-1:-1;;;;;5160:37:10;;;;;-1:-1:-1;;;;;;;;5160:37:10;;;;;;;;-1:-1:-1;;;5160:37:10;;;;;;;;;;5231:14;;;:8;:14;;;;;;-1:-1:-1;;;;;5231:21:10;;;;;;;;;;5289;;5339:41;;-1:-1:-1;;;5339:41:10;;5160:37;;5231:21;;5262:48;;;;;5183:14;;5352:13;5339:35;;;;;;:41;;5192:4;;5339:41;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5339:51:10;;5391:13;5339:66;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5320:85;;5434:4;:20;;;-1:-1:-1;;;;;5419:35:10;:12;:35;:52;;;;-1:-1:-1;5458:13:10;;;5419:52;5415:340;;;5487:14;5504:38;5521:4;:20;;;-1:-1:-1;;;;;5504:38:10;:12;:16;;:38;;;;:::i;:::-;5487:55;;5556:19;5627:15;;5578:46;5608:4;:15;;;-1:-1:-1;;;;;5578:46:10;:25;5589:13;;5578:6;:10;;:25;;;;:::i;:::-;:29;;:46::i;:::-;:64;;;;;;;-1:-1:-1;5675:69:10;5735:8;5696:36;5578:64;1587:4;5696:15;:36::i;:::-;:47;;;;;5675:16;;5696:47;;5675:20;:69::i;:::-;5656:88;;5415:340;;;5836:15;;;;5775:11;;5774:78;;5836:15;1587:4;;5775:33;;5791:16;5775:15;:33::i;:::-;:55;;;;;;;5774:61;:78::i;:::-;5764:88;5061:798;-1:-1:-1;;;;;;;5061:798:10:o;1295:348:1:-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;-1:-1:-1;;;1415:72:1;;;;;;;:::i;:::-;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;6398:866:10:-;6447:20;;:::i;:::-;-1:-1:-1;6486:13:10;;;;:8;:13;;;;;;;;;6479:20;;;;;;;;;-1:-1:-1;;;;;6479:20:10;;;;-1:-1:-1;;;;;;;;6479:20:10;;;;;;;;;;-1:-1:-1;;;6479:20:10;;;;;;;;;;;6509:57;;;;-1:-1:-1;;;6509:57:10;;;;;;;:::i;:::-;6595:4;:20;;;-1:-1:-1;;;;;6580:35:10;:12;:35;6576:682;;;6650:40;;-1:-1:-1;;;6650:40:10;;6631:16;;-1:-1:-1;;;;;6663:13:10;6650:35;;;;:40;;6686:3;;6650:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6650:50:10;;6701:13;6650:65;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6631:84;-1:-1:-1;6734:12:10;;6730:336;;6766:14;6783:38;6800:4;:20;;;-1:-1:-1;;;;;6783:38:10;:12;:16;;:38;;;;:::i;:::-;6766:55;;6839:19;6910:15;;6861:46;6891:4;:15;;;-1:-1:-1;;;;;6861:46:10;:25;6872:13;;6861:6;:10;;:25;;;;:::i;:46::-;:64;;;;;;;-1:-1:-1;6967:84:10;6993:57;7033:8;6994:36;6861:64;1587:4;6994:15;:36::i;:::-;:47;;;;;;6993:55;:57::i;:::-;6967:21;;-1:-1:-1;;;;;6967:25:10;;;:84::i;:::-;-1:-1:-1;;;;;6943:108:10;;;-1:-1:-1;;6730:336:10;7102:19;:12;:17;:19::i;:::-;-1:-1:-1;;;;;7079:42:10;;;:20;;;;:42;;;7135:13;;;;:8;:13;;;;;;;;:20;;;;;;;;;;-1:-1:-1;;;;;;7135:20:10;;;-1:-1:-1;;;;;7135:20:10;;;-1:-1:-1;;;;7135:20:10;-1:-1:-1;;;7135:20:10;;;;;-1:-1:-1;;;;;7135:20:10;-1:-1:-1;;;7135:20:10;;;;;;;;;;;;;;7174:73;7135:13;;7174:73;;;;7135:20;;7215:8;;7174:73;:::i;:::-;;;;;;;;6576:682;;6398:866;;;:::o;6034:188::-;6117:4;6103:11;6138:78;6162:3;6158:1;:7;6138:78;;;6186:19;6197:4;;6202:1;6197:7;;;;;;;;;;;;;6186:10;:19::i;:::-;-1:-1:-1;6167:3:10;;6138:78;;;;6034:188;;;:::o;1228:24::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1228:24:10;:::o;3899:462::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;3981:14:10::1;::::0;;;:8:::1;:14;::::0;;;;:30;-1:-1:-1;;;3981:30:10;::::1;-1:-1:-1::0;;;;;3981:30:10::1;:35:::0;3973:67:::1;;;;-1:-1:-1::0;;;3973:67:10::1;;;;;;;:::i;:::-;4116:15;::::0;4076:12:::1;::::0;4116:31:::1;::::0;4136:10;4116:19:::1;:31::i;:::-;4098:15;:49:::0;4175:103:::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;4175:103:10;;::::1;::::0;::::1;4233:22;:15:::0;:20:::1;:22::i;:::-;-1:-1:-1::0;;;;;4175:103:10::1;;;;;4197:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;4175:103:10;;::::1;::::0;;;4158:14:::1;::::0;;;:8:::1;:14;::::0;;;;;;;:120;;;;;;::::1;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;;4158:120:10::1;-1:-1:-1::0;;;;;4158:120:10;;;::::1;-1:-1:-1::0;;;4158:120:10::1;-1:-1:-1::0;;;;;;;;;4158:120:10;;::::1;-1:-1:-1::0;;;;;;4158:120:10;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;4288:7:::1;:18:::0;;4158:120;4288:18;::::1;::::0;;;;;::::1;::::0;;;4321:33;4167:4;;4321:33:::1;::::0;::::1;::::0;4343:10;;4321:33:::1;:::i;:::-;;;;;;;;1799:1:1;3899:462:10::0;;:::o;350:20:1:-;;;-1:-1:-1;;;;;350:20:1;;:::o;1313:64:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2260:661::-;3419:10;-1:-1:-1;;;;;3433:13:10;3419:27;;3411:73;;;;-1:-1:-1;;;3411:73:10;;;;;;;:::i;:::-;2432:20:::1;;:::i;:::-;2455:15;2466:3;2455:10;:15::i;:::-;2480:21;2504:13:::0;;;:8:::1;:13;::::0;;;;;;;-1:-1:-1;;;;;2504:20:10;::::1;::::0;;;;;;;2563:11;;2432:38;;-1:-1:-1;2504:20:10;2563:15;2559:190:::1;;2671:15;::::0;::::1;::::0;2621:21;;2605:11;;2604:83:::1;::::0;2671:15;1587:4:::1;::::0;2605:38:::1;::::0;-1:-1:-1;;;;;2605:38:10::1;:15;:38::i;2604:83::-;2594:93:::0;-1:-1:-1;2701:37:10::1;-1:-1:-1::0;;;;;2701:11:10::1;:24;2726:2:::0;2594:93;2701:24:::1;:37::i;:::-;2758:21:::0;;;2819;;1587:4:::1;::::0;2807:34:::1;::::0;2772:7;;-1:-1:-1;;;;;2807:34:10::1;:11;:34::i;:::-;:56;;;;;;2789:4;:15;;:74;;;;2911:2;-1:-1:-1::0;;;;;2878:36:10::1;2897:3;2890:5;-1:-1:-1::0;;;;;2878:36:10::1;;2902:7;2878:36;;;;;;:::i;:::-;;;;;;;;3494:1;;;2260:661:::0;;;;;:::o;2927:450::-;3152:15;;;3165:1;3152:15;;;;;;;;;3048:28;;;;;;3152:15;;;;;;;;;;;-1:-1:-1;3152:15:10;3120:47;;3197:11;3177:13;3191:1;3177:16;;;;;;;;-1:-1:-1;;;;;3177:32:10;;;;:16;;;;;;;;;;;:32;3253:16;;;3267:1;3253:16;;;;;;;;;3219:31;;3253:16;;;;;;;;;;;;-1:-1:-1;3253:16:10;3219:50;;3299:23;3312:3;3317:4;3299:12;:23::i;:::-;3279:14;3294:1;3279:17;;;;;;;;;;;;;;;;;:43;3340:13;;;;-1:-1:-1;2927:450:10;-1:-1:-1;;;;2927:450:10:o;397:27:1:-;;;-1:-1:-1;;;;;397:27:1;;:::o;342:122:4:-;425:5;;;420:16;;;;412:50;;;;-1:-1:-1;;;412:50:4;;;;;;;:::i;:::-;342:122;;;;:::o;211:125::-;294:5;;;289:16;;;;281:53;;;;-1:-1:-1;;;281:53:4;;;;;;;:::i;780:156::-;828:8;-1:-1:-1;;;;;857:15:4;;;849:55;;;;-1:-1:-1;;;849:55:4;;;;;;;:::i;:::-;-1:-1:-1;926:1:4;780:156::o;470:137::-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;-1:-1:-1;;;540:65:4;;;;;;;:::i;613:161::-;662:9;-1:-1:-1;;;;;692:16:4;;;684:57;;;;-1:-1:-1;;;684:57:4;;;;;;;:::i;1134:125::-;1217:5;;;-1:-1:-1;;;;;1212:16:4;;;;;;;;1204:53;;;;-1:-1:-1;;;1204:53:4;;;;;;;:::i;951:304:3:-;1036:12;1050:17;1079:5;-1:-1:-1;;;;;1071:19:3;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1149:98;;;;-1:-1:-1;;;1149:98:3;;;;;;;:::i;:::-;951:304;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1233:479::-;;;;1365:2;1353:9;1344:7;1340:23;1336:32;1333:2;;;-1:-1;;1371:12;1333:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1423:63;-1:-1;1523:2;1559:22;;584:20;609:30;584:20;609:30;:::i;:::-;1531:60;-1:-1;1628:2;1664:22;;584:20;609:30;584:20;609:30;:::i;:::-;1636:60;;;;1327:385;;;;;:::o;1719:397::-;;;1858:2;1846:9;1837:7;1833:23;1829:32;1826:2;;;-1:-1;;1864:12;1826:2;1922:17;1909:31;-1:-1;;;;;1960:18;1952:6;1949:30;1946:2;;;-1:-1;;1982:12;1946:2;2083:6;2072:9;2068:22;;;290:3;283:4;275:6;271:17;267:27;257:2;;-1:-1;;298:12;257:2;341:6;328:20;1960:18;360:6;357:30;354:2;;;-1:-1;;390:12;354:2;485:3;1858:2;;469:6;465:17;426:6;451:32;;448:41;445:2;;;-1:-1;;492:12;445:2;1858;422:17;;;;;2002:98;;-1:-1;1820:296;;-1:-1;;;;1820:296::o;2123:257::-;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;-1:-1;;2241:12;2203:2;732:6;726:13;744:30;768:5;744:30;:::i;:::-;2293:71;2197:183;-1:-1;;;2197:183::o;2387:291::-;;2516:2;2504:9;2495:7;2491:23;2487:32;2484:2;;;-1:-1;;2522:12;2484:2;884:6;878:13;896:47;937:5;896:47;:::i;2685:241::-;;2789:2;2777:9;2768:7;2764:23;2760:32;2757:2;;;-1:-1;;2795:12;2757:2;-1:-1;1022:20;;2751:175;-1:-1;2751:175::o;2933:263::-;;3048:2;3036:9;3027:7;3023:23;3019:32;3016:2;;;-1:-1;;3054:12;3016:2;-1:-1;1170:13;;3010:186;-1:-1;3010:186::o;3203:366::-;;;3324:2;3312:9;3303:7;3299:23;3295:32;3292:2;;;-1:-1;;3330:12;3292:2;1035:6;1022:20;3382:63;;3482:2;3525:9;3521:22;72:20;97:33;124:5;97:33;:::i;:::-;3490:63;;;;3286:283;;;;;:::o;3576:743::-;;;;;;3748:3;3736:9;3727:7;3723:23;3719:33;3716:2;;;-1:-1;;3755:12;3716:2;1035:6;1022:20;3807:63;;3907:2;3950:9;3946:22;72:20;97:33;124:5;97:33;:::i;:::-;3915:63;-1:-1;4015:2;4054:22;;72:20;97:33;72:20;97:33;:::i;:::-;3710:609;;;;-1:-1;4023:63;;4123:2;4162:22;;1022:20;;-1:-1;4231:3;4271:22;1022:20;;3710:609;-1:-1;;3710:609::o;4326:491::-;;;;4464:2;4452:9;4443:7;4439:23;4435:32;4432:2;;;-1:-1;;4470:12;4432:2;1035:6;1022:20;4522:63;;4622:2;4665:9;4661:22;72:20;97:33;124:5;97:33;:::i;:::-;4426:391;;4630:63;;-1:-1;;;4730:2;4769:22;;;;1022:20;;4426:391::o;4824:366::-;;;4945:2;4933:9;4924:7;4920:23;4916:32;4913:2;;;-1:-1;;4951:12;4913:2;-1:-1;;1022:20;;;5103:2;5142:22;;;1022:20;;-1:-1;4907:283::o;5408:173::-;12973:37;;5570:4;5561:14;;5488:93::o;13366:271::-;;7405:5;22192:12;-1:-1;24653:101;24667:6;24664:1;24661:13;24653:101;;;7549:4;24734:11;;;;;24728:18;24715:11;;;24708:39;24682:10;24653:101;;;24769:6;24766:1;24763:13;24760:2;;;-1:-1;24825:6;24820:3;24816:16;24809:27;24760:2;-1:-1;7580:16;;;;;13500:137;-1:-1;;13500:137::o;13644:222::-;-1:-1;;;;;23932:54;;;;5660:37;;13771:2;13756:18;;13742:124::o;13873:333::-;-1:-1;;;;;23932:54;;;;5660:37;;14192:2;14177:18;;12973:37;14028:2;14013:18;;13999:207::o;14213:657::-;14482:2;14496:47;;;22192:12;;14467:18;;;22868:19;;;14213:657;;22917:4;;22908:14;;;;21874;;;14213:657;6198:288;6223:6;6220:1;6217:13;6198:288;;;6284:13;;-1:-1;;;;;23932:54;7683:64;;5379:14;;;;22608;;;;1960:18;6238:9;6198:288;;;6202:14;;;14727:9;14721:4;14717:20;22917:4;14701:9;14697:18;14690:48;14752:108;6740:5;22192:12;6759:86;6838:6;6833:3;6759:86;:::i;:::-;6752:93;;22917:4;6916:5;21874:14;6928:21;;-1:-1;6955:260;6980:6;6977:1;6974:13;6955:260;;;7068:63;7127:3;7047:6;7041:13;7068:63;:::i;:::-;22608:14;;;;7061:70;-1:-1;6245:1;6995:9;6955:260;;;-1:-1;14744:116;;14453:417;-1:-1;;;;;;;14453:417::o;14877:416::-;15077:2;15091:47;;;7984:2;15062:18;;;22868:19;-1:-1;;;22908:14;;;8000:44;8063:12;;;15048:245::o;15300:416::-;15500:2;15514:47;;;8314:2;15485:18;;;22868:19;-1:-1;;;22908:14;;;8330:42;8391:12;;;15471:245::o;15723:416::-;15923:2;15937:47;;;8642:2;15908:18;;;22868:19;8678:30;22908:14;;;8658:51;8728:12;;;15894:245::o;16146:416::-;16346:2;16360:47;;;8979:2;16331:18;;;22868:19;9015:34;22908:14;;;8995:55;-1:-1;;;9070:12;;;9063:25;9107:12;;;16317:245::o;16569:416::-;16769:2;16783:47;;;9358:2;16754:18;;;22868:19;-1:-1;;;22908:14;;;9374:44;9437:12;;;16740:245::o;16992:416::-;17192:2;17206:47;;;9688:2;17177:18;;;22868:19;-1:-1;;;22908:14;;;9704:42;9765:12;;;17163:245::o;17415:416::-;17615:2;17629:47;;;10016:2;17600:18;;;22868:19;10052:30;22908:14;;;10032:51;10102:12;;;17586:245::o;17838:416::-;18038:2;18052:47;;;10353:2;18023:18;;;22868:19;10389:26;22908:14;;;10369:47;10435:12;;;18009:245::o;18261:416::-;18461:2;18475:47;;;18446:18;;;22868:19;10722:34;22908:14;;;10702:55;10776:12;;;18432:245::o;18684:416::-;18884:2;18898:47;;;18869:18;;;22868:19;11063:34;22908:14;;;11043:55;11117:12;;;18855:245::o;19107:416::-;19307:2;19321:47;;;11368:2;19292:18;;;22868:19;11404:29;22908:14;;;11384:50;11453:12;;;19278:245::o;19530:416::-;19730:2;19744:47;;;11704:2;19715:18;;;22868:19;11740:26;22908:14;;;11720:47;11786:12;;;19701:245::o;19953:326::-;12108:23;;-1:-1;;;;;23812:46;12610:37;;12290:4;12279:16;;;12273:23;-1:-1;;;;;24138:30;;;12348:14;;;13201:36;;;;12448:4;12437:16;;;12431:23;24138:30;12506:14;;;13201:36;;;;20132:2;20117:18;;20103:176::o;20286:436::-;-1:-1;;;;;23812:46;;;;12610:37;;-1:-1;;;;;24138:30;;;20627:2;20612:18;;13201:36;24138:30;20708:2;20693:18;;13201:36;20465:2;20450:18;;20436:286::o;20729:222::-;12973:37;;;20856:2;20841:18;;20827:124::o;20958:333::-;12973:37;;;21277:2;21262:18;;12973:37;21113:2;21098:18;;21084:207::o;21298:440::-;-1:-1;;;;;24138:30;;;;13201:36;;21641:2;21626:18;;12973:37;;;;-1:-1;;;;;23812:46;21724:2;21709:18;;12850:50;21479:2;21464:18;;21450:288::o;24857:117::-;-1:-1;;;;;23932:54;;24916:35;;24906:2;;24965:1;;24955:12;24906:2;24900:74;:::o;24981:111::-;25062:5;23612:13;23605:21;25040:5;25037:32;25027:2;;25083:1;;25073:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1205600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "add(uint256,uint256)": "infinite",
                "claimOwnership()": "45089",
                "massUpdatePools(uint256[])": "infinite",
                "onPichiReward(uint256,address,address,uint256,uint256)": "infinite",
                "owner()": "1159",
                "pendingOwner()": "1158",
                "pendingToken(uint256,address)": "infinite",
                "pendingTokens(uint256,address,uint256)": "infinite",
                "poolIds(uint256)": "2041",
                "poolInfo(uint256)": "1411",
                "poolLength()": "1074",
                "set(uint256,uint256)": "infinite",
                "tokenPerBlock()": "1051",
                "transferOwnership(address,bool,bool)": "infinite",
                "updatePool(uint256)": "infinite",
                "userInfo(uint256,address)": "2204"
              }
            },
            "methodIdentifiers": {
              "add(uint256,uint256)": "771602f7",
              "claimOwnership()": "4e71e0c8",
              "massUpdatePools(uint256[])": "57a5b58c",
              "onPichiReward(uint256,address,address,uint256,uint256)": "ad3b6836",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "pendingToken(uint256,address)": "48e43af4",
              "pendingTokens(uint256,address,uint256)": "d63b3c49",
              "poolIds(uint256)": "69883b4e",
              "poolInfo(uint256)": "1526fe27",
              "poolLength()": "081e3eda",
              "set(uint256,uint256)": "1ab06ee5",
              "tokenPerBlock()": "4198709a",
              "transferOwnership(address,bool,bool)": "078dfbe7",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_MASTERCHEF_V2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"LogInit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"LogOnReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"}],\"name\":\"LogPoolAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"}],\"name\":\"LogSetPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accPichiPerShare\",\"type\":\"uint256\"}],\"name\":\"LogUpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpToken\",\"type\":\"uint256\"}],\"name\":\"onPichiReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accPichiPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accPichiPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct ComplexRewarder.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"@0xKeno\",\"kind\":\"dev\",\"methods\":{\"add(uint256,uint256)\":{\"details\":\"Add a new LP to the pool.  Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.\",\"params\":{\"_pid\":\"Pid on MCV2\",\"allocPoint\":\"AP of the new pool.\"}},\"massUpdatePools(uint256[])\":{\"details\":\"Update reward variables for all pools. Be careful of gas spending!\",\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"pendingToken(uint256,address)\":{\"details\":\"View function to see pending Token\",\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"PICHI reward for a given user.\"}},\"poolLength()\":{\"details\":\"Returns the number of MCV2 pools.\"},\"set(uint256,uint256)\":{\"details\":\"Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\",\"params\":{\"_allocPoint\":\"New AP of the pool.\",\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"updatePool(uint256)\":{\"details\":\"Update reward variables of the given pool.\",\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}}},\"stateVariables\":{\"poolInfo\":{\"details\":\"Info of each pool.\"},\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"},\"userInfo\":{\"details\":\"Info of each user that stakes LP tokens.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/ComplexRewarder.sol\":\"ComplexRewarder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/MasterChefV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IMasterChef.sol\\\";\\n\\ninterface IMigratorChef {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\\n/// It is the only address with minting rights for PICHI.\\n/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the MasterChef V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract MasterChefV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @dev Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of PICHI entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @dev Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of PICHI to distribute per block.\\n    struct PoolInfo {\\n        uint128 accPichiPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @dev Address of MCV1 contract.\\n    IMasterChef public immutable MASTER_CHEF;\\n    /// @dev Address of PICHI contract.\\n    IERC20 public immutable PICHI;\\n    /// @dev The index of MCV2 master pool in MCV1.\\n    uint256 public immutable MASTER_PID;\\n    // @dev The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorChef public migrator;\\n\\n    /// @dev Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @dev Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @dev Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @dev Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 private constant MASTERCHEF_PICHI_PER_BLOCK = 1e20;\\n    uint256 private constant ACC_PICHI_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accPichiPerShare);\\n    event LogInit();\\n\\n    /// @param _MASTER_CHEF The PolyCityDex MCV1 contract address.\\n    /// @param _pichi The PICHI token contract address.\\n    /// @param _MASTER_PID The pool ID of the dummy token on the base MCV1 contract.\\n    constructor(IMasterChef _MASTER_CHEF, IERC20 _pichi, uint256 _MASTER_PID) public {\\n        MASTER_CHEF = _MASTER_CHEF;\\n        PICHI = _pichi;\\n        MASTER_PID = _MASTER_PID;\\n    }\\n\\n    /// @dev Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting rights for PICHI.\\n    /// Any balance of transaction sender in `dummyToken` is transferred.\\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\\n    function init(IERC20 dummyToken) external {\\n        uint256 balance = dummyToken.balanceOf(msg.sender);\\n        require(balance != 0, \\\"MasterChefV2: Balance must exceed 0\\\");\\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\\n        dummyToken.approve(address(MASTER_CHEF), balance);\\n        MASTER_CHEF.deposit(MASTER_PID, balance);\\n        emit LogInit();\\n    }\\n\\n    /// @dev Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accPichiPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @dev Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @dev Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"MasterChefV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"MasterChefV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @dev View function to see pending PICHI on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending PICHI reward for a given user.\\n    function pendingPichi(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accPichiPerShare = pool.accPichiPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accPichiPerShare) / ACC_PICHI_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @dev Calculates and returns the `amount` of PICHI per block.\\n    function pichiPerBlock() public view returns (uint256 amount) {\\n        amount = uint256(MASTERCHEF_PICHI_PER_BLOCK)\\n            .mul(MASTER_CHEF.poolInfo(MASTER_PID).allocPoint) / MASTER_CHEF.totalAllocPoint();\\n    }\\n\\n    /// @dev Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accPichiPerShare);\\n        }\\n    }\\n\\n    /// @dev Deposit LP tokens to MCV2 for PICHI allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n        \\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of PICHI rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi;\\n\\n        // Interactions\\n        if (_pendingPichi != 0) {\\n            PICHI.safeTransfer(to, _pendingPichi);\\n        }\\n        \\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward( pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n    \\n    /// @dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and PICHI rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n        \\n        // Interactions\\n        PICHI.safeTransfer(to, _pendingPichi);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n\\n    /// @dev Harvests PICHI from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to this MCV2 contract.\\n    function harvestFromMasterChef() public {\\n        MASTER_CHEF.deposit(MASTER_PID, 0);\\n    }\\n\\n    /// @dev Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xce80632a87f022eab3609a722ecb72d4f4da124f401d0a68607c28b74a763169\",\"license\":\"MIT\"},\"contracts/interfaces/IMasterChef.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IMasterChef {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount; // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken; // Address of LP token contract.\\n        uint256 allocPoint; // How many allocation points assigned to this pool. PICHI to distribute per block.\\n        uint256 lastRewardBlock; // Last block number that PICHI distribution occurs.\\n        uint256 accPichiPerShare; // Accumulated PICHI per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);\\n\\n    function totalAllocPoint() external view returns (uint256);\\n\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0x2ade0f4bcab4f5537b20ae75ba2099f507b6c620bb81427cf4e687fd057216e1\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 private constant _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\\n\",\"keccak256\":\"0x42b350cf39c1685e9a37835d6e6fb66e27362ccdf38a165f5030c2eb8bccc938\",\"license\":\"MIT\"},\"contracts/mocks/ComplexRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"../interfaces/IRewarder.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"../MasterChefV2.sol\\\";\\n\\n/// @author @0xKeno\\ncontract ComplexRewarder is IRewarder, BoringOwnable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n\\n    IERC20 private immutable rewardToken;\\n\\n    /// @dev Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of PICHI entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        uint256 rewardDebt;\\n    }\\n\\n    /// @dev Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of PICHI to distribute per block.\\n    struct PoolInfo {\\n        uint128 accPichiPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @dev Info of each pool.\\n    mapping(uint256 => PoolInfo) public poolInfo;\\n\\n    uint256[] public poolIds;\\n\\n    /// @dev Info of each user that stakes LP tokens.\\n    mapping(uint256 => mapping(address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 totalAllocPoint;\\n\\n    uint256 public tokenPerBlock;\\n    uint256 private constant ACC_TOKEN_PRECISION = 1e12;\\n\\n    address private immutable MASTERCHEF_V2;\\n\\n    event LogOnReward(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accPichiPerShare);\\n    event LogInit();\\n\\n    constructor(\\n        IERC20 _rewardToken,\\n        uint256 _tokenPerBlock,\\n        address _MASTERCHEF_V2\\n    ) public {\\n        rewardToken = _rewardToken;\\n        tokenPerBlock = _tokenPerBlock;\\n        MASTERCHEF_V2 = _MASTERCHEF_V2;\\n    }\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address _user,\\n        address to,\\n        uint256,\\n        uint256 lpToken\\n    ) external override onlyMCV2 {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][_user];\\n        uint256 pending;\\n        if (user.amount > 0) {\\n            pending = (user.amount.mul(pool.accPichiPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\\n            rewardToken.safeTransfer(to, pending);\\n        }\\n        user.amount = lpToken;\\n        user.rewardDebt = lpToken.mul(pool.accPichiPerShare) / ACC_TOKEN_PRECISION;\\n        emit LogOnReward(_user, pid, pending, to);\\n    }\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256\\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\\n        IERC20[] memory _rewardTokens = new IERC20[](1);\\n        _rewardTokens[0] = (rewardToken);\\n        uint256[] memory _rewardAmounts = new uint256[](1);\\n        _rewardAmounts[0] = pendingToken(pid, user);\\n        return (_rewardTokens, _rewardAmounts);\\n    }\\n\\n    modifier onlyMCV2 {\\n        require(msg.sender == MASTERCHEF_V2, \\\"Only MCV2 can call this function.\\\");\\n        _;\\n    }\\n\\n    /// @dev Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolIds.length;\\n    }\\n\\n    /// @dev Add a new LP to the pool.  Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _pid Pid on MCV2\\n    function add(uint256 allocPoint, uint256 _pid) public onlyOwner {\\n        require(poolInfo[_pid].lastRewardBlock == 0, \\\"Pool already exists\\\");\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n\\n        poolInfo[_pid] = PoolInfo({allocPoint: allocPoint.to64(), lastRewardBlock: lastRewardBlock.to64(), accPichiPerShare: 0});\\n        poolIds.push(_pid);\\n        emit LogPoolAddition(_pid, allocPoint);\\n    }\\n\\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    function set(uint256 _pid, uint256 _allocPoint) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        emit LogSetPool(_pid, _allocPoint);\\n    }\\n\\n    /// @dev View function to see pending Token\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending PICHI reward for a given user.\\n    function pendingToken(uint256 _pid, address _user) public view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accPichiPerShare = pool.accPichiPerShare;\\n        uint256 lpSupply = MasterChefV2(MASTERCHEF_V2).lpToken(_pid).balanceOf(MASTERCHEF_V2);\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 pichiReward = blocks.mul(tokenPerBlock).mul(pool.allocPoint) / totalAllocPoint;\\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_TOKEN_PRECISION) / lpSupply);\\n        }\\n        pending = (user.amount.mul(accPichiPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\\n    }\\n\\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @dev Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        require(pool.lastRewardBlock != 0, \\\"Pool does not exist\\\");\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = MasterChefV2(MASTERCHEF_V2).lpToken(pid).balanceOf(MASTERCHEF_V2);\\n\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 pichiReward = blocks.mul(tokenPerBlock).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_TOKEN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accPichiPerShare);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb8fa9436bbda3819670b87d96615f07744df153e346fff2982a30445d23d22bd\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 3559,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "poolInfo",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint256,t_struct(PoolInfo)3554_storage)"
              },
              {
                "astId": 3562,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "poolIds",
                "offset": 0,
                "slot": "3",
                "type": "t_array(t_uint256)dyn_storage"
              },
              {
                "astId": 3569,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "userInfo",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)3547_storage))"
              },
              {
                "astId": 3572,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "totalAllocPoint",
                "offset": 0,
                "slot": "5",
                "type": "t_uint256"
              },
              {
                "astId": 3574,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "tokenPerBlock",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)dyn_storage": {
                "base": "t_uint256",
                "encoding": "dynamic_array",
                "label": "uint256[]",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_struct(UserInfo)3547_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct ComplexRewarder.UserInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(UserInfo)3547_storage"
              },
              "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)3547_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_struct(UserInfo)3547_storage)"
              },
              "t_mapping(t_uint256,t_struct(PoolInfo)3554_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ComplexRewarder.PoolInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(PoolInfo)3554_storage"
              },
              "t_struct(PoolInfo)3554_storage": {
                "encoding": "inplace",
                "label": "struct ComplexRewarder.PoolInfo",
                "members": [
                  {
                    "astId": 3549,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "accPichiPerShare",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 3551,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "lastRewardBlock",
                    "offset": 16,
                    "slot": "0",
                    "type": "t_uint64"
                  },
                  {
                    "astId": 3553,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "allocPoint",
                    "offset": 24,
                    "slot": "0",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(UserInfo)3547_storage": {
                "encoding": "inplace",
                "label": "struct ComplexRewarder.UserInfo",
                "members": [
                  {
                    "astId": 3544,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "amount",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 3546,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "rewardDebt",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/mocks/ComplexRewarderTime.sol": {
        "ComplexRewarderTime": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_rewardToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_rewardPerSecond",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_MASTERCHEF_V2",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "LogInit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "LogOnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "LogPoolAddition",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rewardPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "LogRewardPerSecond",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "LogSetPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accPichiPerShare",
                  "type": "uint256"
                }
              ],
              "name": "LogUpdatePool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "add",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "lpToken",
                  "type": "uint256"
                }
              ],
              "name": "onPichiReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolIds",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accPichiPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rewardPerSecond",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "set",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_rewardPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "setRewardPerSecond",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accPichiPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct ComplexRewarderTime.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardDebt",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "@0xKeno",
            "kind": "dev",
            "methods": {
              "add(uint256,uint256)": {
                "details": "Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.",
                "params": {
                  "_pid": "Pid on MCV2",
                  "allocPoint": "AP of the new pool."
                }
              },
              "massUpdatePools(uint256[])": {
                "details": "Update reward variables for all pools. Be careful of gas spending!",
                "params": {
                  "pids": "Pool IDs of all to be updated. Make sure to update all active pools."
                }
              },
              "pendingToken(uint256,address)": {
                "details": "View function to see pending Token",
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_user": "Address of user."
                },
                "returns": {
                  "pending": "PICHI reward for a given user."
                }
              },
              "poolLength()": {
                "details": "Returns the number of MCV2 pools."
              },
              "set(uint256,uint256)": {
                "details": "Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.",
                "params": {
                  "_allocPoint": "New AP of the pool.",
                  "_pid": "The index of the pool. See `poolInfo`."
                }
              },
              "setRewardPerSecond(uint256)": {
                "details": "Sets the pichi per second to be distributed. Can only be called by the owner.",
                "params": {
                  "_rewardPerSecond": "The amount of Pichi to be distributed per second."
                }
              },
              "updatePool(uint256)": {
                "details": "Update reward variables of the given pool.",
                "params": {
                  "pid": "The index of the pool. See `poolInfo`."
                },
                "returns": {
                  "pool": "Returns the pool that was updated."
                }
              }
            },
            "stateVariables": {
              "poolInfo": {
                "details": "Info of each pool."
              },
              "totalAllocPoint": {
                "details": "Total allocation points. Must be the sum of all allocation points in all pools."
              },
              "userInfo": {
                "details": "Info of each user that stakes LP tokens."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b50604051620018f9380380620018f9833981016040819052620000349162000099565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606093841b811660805260069290925590911b1660a052620000f9565b600080600060608486031215620000ae578283fd5b8351620000bb81620000e0565b602085015160408601519194509250620000d581620000e0565b809150509250925092565b6001600160a01b0381168114620000f657600080fd5b50565b60805160601c60a05160601c6117bd6200013c6000398061051352806105a8528061081852806108ad5280610d35525080610de65280610ebb52506117bd6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806366da5815116100a25780638f10369a116100715780638f10369a1461021457806393f1a40b1461021c578063ad3b68361461023d578063d63b3c4914610250578063e30c3978146102715761010b565b806366da5815146101c657806369883b4e146101d9578063771602f7146101ec5780638da5cb5b146101ff5761010b565b806348e43af4116100de57806348e43af4146101785780634e71e0c81461018b57806351eb05a61461019357806357a5b58c146101b35761010b565b8063078dfbe714610110578063081e3eda146101255780631526fe27146101435780631ab06ee514610165575b600080fd5b61012361011e366004611177565b610279565b005b61012d610368565b60405161013a9190611720565b60405180910390f35b61015661015136600461126e565b61036e565b60405161013a939291906116f6565b610123610173366004611355565b6103a5565b61012d61018636600461129e565b610484565b610123610712565b6101a66101a136600461126e565b61079f565b60405161013a91906116bd565b6101236101c13660046111c1565b610a9d565b6101236101d436600461126e565b610ad3565b61012d6101e736600461126e565b610b3d565b6101236101fa366004611355565b610b5b565b610207610cf1565b60405161013a91906113b7565b61012d610d00565b61022f61022a36600461129e565b610d06565b60405161013a929190611729565b61012361024b3660046112cd565b610d2a565b61026361025e36600461131e565b610e93565b60405161013a9291906113e4565b610207610f52565b6000546001600160a01b031633146102ac5760405162461bcd60e51b81526004016102a3906115e5565b60405180910390fd5b8115610347576001600160a01b0383161515806102c65750805b6102e25760405162461bcd60e51b81526004016102a390611548565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610363565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103cf5760405162461bcd60e51b81526004016102a3906115e5565b60008281526002602052604090205460055461040691839161040091600160c01b90046001600160401b0316610f61565b90610f8a565b60055561041281610fad565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c90610478908490611720565b60405180910390a25050565b600061048e611157565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610548918b9101611720565b60206040518083038186803b15801561056057600080fd5b505afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105989190611252565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105e391906113b7565b60206040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190611286565b905083602001516001600160401b03164211801561065057508015155b156106dc57600061067785602001516001600160401b031642610f6190919063ffffffff16565b905060006005546106aa87604001516001600160401b03166106a460065486610fda90919063ffffffff16565b90610fda565b816106b157fe5b0490506106d7836106c78364e8d4a51000610fda565b816106ce57fe5b86919004610f8a565b935050505b60018301548354610707919064e8d4a51000906106f99086610fda565b8161070057fe5b0490610f61565b979650505050505050565b6001546001600160a01b031633811461073d5760405162461bcd60e51b81526004016102a39061161a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6107a7611157565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b9091041692810192909252421115610a98576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061084d908690600401611720565b60206040518083038186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089d9190611252565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108e891906113b7565b60206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109389190611286565b905080156109db57600061096283602001516001600160401b031642610f6190919063ffffffff16565b9050600060055461098f85604001516001600160401b03166106a460065486610fda90919063ffffffff16565b8161099657fe5b0490506109cd6109bc846109af8464e8d4a51000610fda565b816109b657fe5b04611011565b85516001600160801b03169061103a565b6001600160801b0316845250505b6109e442610fad565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610a8e9290918691611737565b60405180910390a2505b919050565b8060005b81811015610acd57610ac4848483818110610ab857fe5b9050602002013561079f565b50600101610aa1565b50505050565b6000546001600160a01b03163314610afd5760405162461bcd60e51b81526004016102a3906115e5565b60068190556040517fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a27890610b32908390611720565b60405180910390a150565b60038181548110610b4a57fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b855760405162461bcd60e51b81526004016102a3906115e5565b600081815260026020526040902054600160801b90046001600160401b031615610bc15760405162461bcd60e51b81526004016102a3906114a3565b6005544290610bd09084610f8a565b60055560408051606081019091526000815260208101610bef83610fad565b6001600160401b03168152602001610c0685610fad565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610ce4908690611720565b60405180910390a2505050565b6000546001600160a01b031681565b60065481565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d725760405162461bcd60e51b81526004016102a390611507565b610d7a611157565b610d838661079f565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610e0d57600182015483518354610dd7929164e8d4a51000916106f9916001600160801b0316610fda565b9050610e0d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168783611069565b838255825164e8d4a5100090610e2d9086906001600160801b0316610fda565b81610e3457fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e819190611720565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610ee757fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610f2e8787610484565b81600081518110610f3b57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f845760405162461bcd60e51b81526004016102a390611474565b92915050565b81810181811015610f845760405162461bcd60e51b81526004016102a3906115ae565b60006001600160401b03821115610fd65760405162461bcd60e51b81526004016102a39061164f565b5090565b6000811580610ff557505080820282828281610ff257fe5b04145b610f845760405162461bcd60e51b81526004016102a390611686565b60006001600160801b03821115610fd65760405162461bcd60e51b81526004016102a390611577565b8181016001600160801b038083169082161015610f845760405162461bcd60e51b81526004016102a3906115ae565b60006060846001600160a01b031663a9059cbb858560405160240161108f9291906113cb565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516110c8919061137e565b6000604051808303816000865af19150503d8060008114611105576040519150601f19603f3d011682016040523d82523d6000602084013e61110a565b606091505b5091509150818015611134575080511580611134575080806020019051810190611134919061122f565b6111505760405162461bcd60e51b81526004016102a3906114d0565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561118b578283fd5b833561119681611761565b925060208401356111a681611779565b915060408401356111b681611779565b809150509250925092565b600080602083850312156111d3578182fd5b82356001600160401b03808211156111e9578384fd5b818501915085601f8301126111fc578384fd5b81358181111561120a578485fd5b866020808302850101111561121d578485fd5b60209290920196919550909350505050565b600060208284031215611240578081fd5b815161124b81611779565b9392505050565b600060208284031215611263578081fd5b815161124b81611761565b60006020828403121561127f578081fd5b5035919050565b600060208284031215611297578081fd5b5051919050565b600080604083850312156112b0578182fd5b8235915060208301356112c281611761565b809150509250929050565b600080600080600060a086880312156112e4578081fd5b8535945060208601356112f681611761565b9350604086013561130681611761565b94979396509394606081013594506080013592915050565b600080600060608486031215611332578283fd5b83359250602084013561134481611761565b929592945050506040919091013590565b60008060408385031215611367578182fd5b50508035926020909101359150565b815260200190565b60008251815b8181101561139e5760208186018101518583015201611384565b818111156113ac5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156114265781516001600160a01b031684529284019290840190600101611401565b5050508381038285015280855161143d8184611720565b91508387019250845b8181101561146757611459838551611376565b938501939250600101611446565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461177657600080fd5b50565b801515811461177657600080fdfea26469706673582212200a511ef23e6b6e7ed2c46874a31770edeae2072ba0a81bbb63d19ba135a9dd1864736f6c634300060c0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18F9 CODESIZE SUB DUP1 PUSH3 0x18F9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x99 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE PUSH1 0x6 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH3 0xF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xAE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xBB DUP2 PUSH3 0xE0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH3 0xD5 DUP2 PUSH3 0xE0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x17BD PUSH3 0x13C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x513 MSTORE DUP1 PUSH2 0x5A8 MSTORE DUP1 PUSH2 0x818 MSTORE DUP1 PUSH2 0x8AD MSTORE DUP1 PUSH2 0xD35 MSTORE POP DUP1 PUSH2 0xDE6 MSTORE DUP1 PUSH2 0xEBB MSTORE POP PUSH2 0x17BD 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 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x66DA5815 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x8F10369A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F10369A EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xAD3B6836 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x271 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x66DA5815 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x69883B4E EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x771602F7 EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1FF JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x48E43AF4 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x48E43AF4 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x1B3 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x1AB06EE5 EQ PUSH2 0x165 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x279 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12D PUSH2 0x368 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x36E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x173 CALLDATASIZE PUSH1 0x4 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x3A5 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x186 CALLDATASIZE PUSH1 0x4 PUSH2 0x129E JUMP JUMPDEST PUSH2 0x484 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x712 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x1A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x79F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0xA9D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0xAD3 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0xB3D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0xB5B JUMP JUMPDEST PUSH2 0x207 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH2 0x12D PUSH2 0xD00 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0x129E JUMP JUMPDEST PUSH2 0xD06 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP3 SWAP2 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x12CD JUMP JUMPDEST PUSH2 0xD2A JUMP JUMPDEST PUSH2 0x263 PUSH2 0x25E CALLDATASIZE PUSH1 0x4 PUSH2 0x131E JUMP JUMPDEST PUSH2 0xE93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP3 SWAP2 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x207 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x347 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x2C6 JUMPI POP DUP1 JUMPDEST PUSH2 0x2E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1548 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH2 0x406 SWAP2 DUP4 SWAP2 PUSH2 0x400 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF61 JUMP JUMPDEST SWAP1 PUSH2 0xF8A JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x412 DUP2 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x942CC7E17A17C164BD977F32AB8C54265D5B9D481E4E352BF874F1E568874E7C SWAP1 PUSH2 0x478 SWAP1 DUP5 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48E PUSH2 0x1157 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE DUP8 DUP6 MSTORE PUSH1 0x4 DUP1 DUP6 MSTORE DUP4 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP9 MSTORE SWAP6 MSTORE DUP4 DUP7 KECCAK256 DUP4 MLOAD SWAP5 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP1 SWAP6 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x78ED5D1F SWAP2 PUSH2 0x548 SWAP2 DUP12 SWAP2 ADD PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x574 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x598 SWAP2 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E3 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x60F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x633 SWAP2 SWAP1 PUSH2 0x1286 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x650 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 PUSH2 0x677 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0xF61 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x6AA DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x6A4 PUSH1 0x6 SLOAD DUP7 PUSH2 0xFDA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x6B1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x6D7 DUP4 PUSH2 0x6C7 DUP4 PUSH5 0xE8D4A51000 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x6CE JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0xF8A JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x707 SWAP2 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6F9 SWAP1 DUP7 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x700 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF61 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x161A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A7 PUSH2 0x1157 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE TIMESTAMP GT ISZERO PUSH2 0xA98 JUMPI PUSH1 0x40 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x78ED5D1F SWAP1 PUSH2 0x84D SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x879 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x89D SWAP2 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8E8 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x938 SWAP2 SWAP1 PUSH2 0x1286 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 PUSH2 0x962 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0xF61 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x98F DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x6A4 PUSH1 0x6 SLOAD DUP7 PUSH2 0xFDA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x996 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x9CD PUSH2 0x9BC DUP5 PUSH2 0x9AF DUP5 PUSH5 0xE8D4A51000 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x9B6 JUMPI INVALID JUMPDEST DIV PUSH2 0x1011 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x103A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x9E4 TIMESTAMP PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP5 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 MLOAD DUP4 DUP9 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP9 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP6 SWAP1 SWAP7 AND SWAP5 SWAP1 SWAP5 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0xA8E SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x1737 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xACD JUMPI PUSH2 0xAC4 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xAB8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x79F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xAA1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xDE89CB17AC7F58F94792B3E91E086ED85403819C24CEEA882491F960CCB1A278 SWAP1 PUSH2 0xB32 SWAP1 DUP4 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB4A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB85 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND ISZERO PUSH2 0xBC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x14A3 JUMP JUMPDEST PUSH1 0x5 SLOAD TIMESTAMP SWAP1 PUSH2 0xBD0 SWAP1 DUP5 PUSH2 0xF8A JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0xBEF DUP4 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC06 DUP6 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 DUP8 ADD MLOAD SWAP7 DUP4 ADD MLOAD DUP7 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP8 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR AND SWAP3 SWAP1 SWAP3 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x38410508059921573AB9EBDCA2A5034BE738D236366B8F32DE4434EA95ED3C81 SWAP1 PUSH2 0xCE4 SWAP1 DUP7 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1507 JUMP JUMPDEST PUSH2 0xD7A PUSH2 0x1157 JUMP JUMPDEST PUSH2 0xD83 DUP7 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 ISZERO PUSH2 0xE0D JUMPI PUSH1 0x1 DUP3 ADD SLOAD DUP4 MLOAD DUP4 SLOAD PUSH2 0xDD7 SWAP3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x6F9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP PUSH2 0xE0D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 DUP4 PUSH2 0x1069 JUMP JUMPDEST DUP4 DUP3 SSTORE DUP3 MLOAD PUSH5 0xE8D4A51000 SWAP1 PUSH2 0xE2D SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0xE34 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ECE88CA2BC08DD018DB50E1D25A20BF1241E5FAB1C396CAA51F01A54BD2F75B DUP5 PUSH1 0x40 MLOAD PUSH2 0xE81 SWAP2 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEE7 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xF2E DUP8 DUP8 PUSH2 0x484 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF3B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1474 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x164F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xFF5 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xFF2 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1577 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x108F SWAP3 SWAP2 SWAP1 PUSH2 0x13CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x10C8 SWAP2 SWAP1 PUSH2 0x137E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1105 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 0x110A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1134 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1134 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1134 SWAP2 SWAP1 PUSH2 0x122F JUMP JUMPDEST PUSH2 0x1150 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x14D0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x118B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1196 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x11A6 DUP2 PUSH2 0x1779 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x11B6 DUP2 PUSH2 0x1779 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11D3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x11E9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11FC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x120A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x121D JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1240 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x124B DUP2 PUSH2 0x1779 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1263 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x124B DUP2 PUSH2 0x1761 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x127F JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1297 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12B0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x12C2 DUP2 PUSH2 0x1761 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x12E4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x12F6 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1306 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1332 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1344 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1367 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x139E JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x1384 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x13AC JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1426 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1401 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x143D DUP2 DUP5 PUSH2 0x1720 JUMP JUMPDEST SWAP2 POP DUP4 DUP8 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1467 JUMPI PUSH2 0x1459 DUP4 DUP6 MLOAD PUSH2 0x1376 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x1446 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x506F6F6C20616C726561647920657869737473 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C79204D4356322063616E2063616C6C20746869732066756E6374696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP MLOAD 0x1E CALLCODE RETURNDATACOPY PUSH12 0x6E7ED2C46874A31770EDEAE2 SMOD 0x2B LOG0 0xA8 SHL 0xBB PUSH4 0xD19BA135 0xA9 0xDD XOR PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "399:7220:11:-:0;;;2072:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;-1:-1:-1;;;;;;2202:26:11;;;;;;;;2238:15;:34;;;;2282:30;;;;;;399:7220;;456:563:-1;;;;619:2;607:9;598:7;594:23;590:32;587:2;;;-1:-1;;625:12;587:2;244:6;238:13;256:47;297:5;256:47;:::i;:::-;802:2;852:22;;393:13;921:2;971:22;;83:13;677:88;;-1:-1;393:13;-1:-1;101:33;83:13;101:33;:::i;:::-;929:74;;;;581:438;;;;;:::o;1443:117::-;-1:-1;;;;;1298:54;;1502:35;;1492:2;;1551:1;;1541:12;1492:2;1486:74;:::o;:::-;399:7220:11;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "4170": [
                  {
                    "length": 32,
                    "start": 3558
                  },
                  {
                    "length": 32,
                    "start": 3771
                  }
                ],
                "4207": [
                  {
                    "length": 32,
                    "start": 1299
                  },
                  {
                    "length": 32,
                    "start": 1448
                  },
                  {
                    "length": 32,
                    "start": 2072
                  },
                  {
                    "length": 32,
                    "start": 2221
                  },
                  {
                    "length": 32,
                    "start": 3381
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061010b5760003560e01c806366da5815116100a25780638f10369a116100715780638f10369a1461021457806393f1a40b1461021c578063ad3b68361461023d578063d63b3c4914610250578063e30c3978146102715761010b565b806366da5815146101c657806369883b4e146101d9578063771602f7146101ec5780638da5cb5b146101ff5761010b565b806348e43af4116100de57806348e43af4146101785780634e71e0c81461018b57806351eb05a61461019357806357a5b58c146101b35761010b565b8063078dfbe714610110578063081e3eda146101255780631526fe27146101435780631ab06ee514610165575b600080fd5b61012361011e366004611177565b610279565b005b61012d610368565b60405161013a9190611720565b60405180910390f35b61015661015136600461126e565b61036e565b60405161013a939291906116f6565b610123610173366004611355565b6103a5565b61012d61018636600461129e565b610484565b610123610712565b6101a66101a136600461126e565b61079f565b60405161013a91906116bd565b6101236101c13660046111c1565b610a9d565b6101236101d436600461126e565b610ad3565b61012d6101e736600461126e565b610b3d565b6101236101fa366004611355565b610b5b565b610207610cf1565b60405161013a91906113b7565b61012d610d00565b61022f61022a36600461129e565b610d06565b60405161013a929190611729565b61012361024b3660046112cd565b610d2a565b61026361025e36600461131e565b610e93565b60405161013a9291906113e4565b610207610f52565b6000546001600160a01b031633146102ac5760405162461bcd60e51b81526004016102a3906115e5565b60405180910390fd5b8115610347576001600160a01b0383161515806102c65750805b6102e25760405162461bcd60e51b81526004016102a390611548565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610363565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103cf5760405162461bcd60e51b81526004016102a3906115e5565b60008281526002602052604090205460055461040691839161040091600160c01b90046001600160401b0316610f61565b90610f8a565b60055561041281610fad565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c90610478908490611720565b60405180910390a25050565b600061048e611157565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610548918b9101611720565b60206040518083038186803b15801561056057600080fd5b505afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105989190611252565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105e391906113b7565b60206040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190611286565b905083602001516001600160401b03164211801561065057508015155b156106dc57600061067785602001516001600160401b031642610f6190919063ffffffff16565b905060006005546106aa87604001516001600160401b03166106a460065486610fda90919063ffffffff16565b90610fda565b816106b157fe5b0490506106d7836106c78364e8d4a51000610fda565b816106ce57fe5b86919004610f8a565b935050505b60018301548354610707919064e8d4a51000906106f99086610fda565b8161070057fe5b0490610f61565b979650505050505050565b6001546001600160a01b031633811461073d5760405162461bcd60e51b81526004016102a39061161a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6107a7611157565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b9091041692810192909252421115610a98576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061084d908690600401611720565b60206040518083038186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089d9190611252565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108e891906113b7565b60206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109389190611286565b905080156109db57600061096283602001516001600160401b031642610f6190919063ffffffff16565b9050600060055461098f85604001516001600160401b03166106a460065486610fda90919063ffffffff16565b8161099657fe5b0490506109cd6109bc846109af8464e8d4a51000610fda565b816109b657fe5b04611011565b85516001600160801b03169061103a565b6001600160801b0316845250505b6109e442610fad565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610a8e9290918691611737565b60405180910390a2505b919050565b8060005b81811015610acd57610ac4848483818110610ab857fe5b9050602002013561079f565b50600101610aa1565b50505050565b6000546001600160a01b03163314610afd5760405162461bcd60e51b81526004016102a3906115e5565b60068190556040517fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a27890610b32908390611720565b60405180910390a150565b60038181548110610b4a57fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b855760405162461bcd60e51b81526004016102a3906115e5565b600081815260026020526040902054600160801b90046001600160401b031615610bc15760405162461bcd60e51b81526004016102a3906114a3565b6005544290610bd09084610f8a565b60055560408051606081019091526000815260208101610bef83610fad565b6001600160401b03168152602001610c0685610fad565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610ce4908690611720565b60405180910390a2505050565b6000546001600160a01b031681565b60065481565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d725760405162461bcd60e51b81526004016102a390611507565b610d7a611157565b610d838661079f565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610e0d57600182015483518354610dd7929164e8d4a51000916106f9916001600160801b0316610fda565b9050610e0d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168783611069565b838255825164e8d4a5100090610e2d9086906001600160801b0316610fda565b81610e3457fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e819190611720565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610ee757fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610f2e8787610484565b81600081518110610f3b57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f845760405162461bcd60e51b81526004016102a390611474565b92915050565b81810181811015610f845760405162461bcd60e51b81526004016102a3906115ae565b60006001600160401b03821115610fd65760405162461bcd60e51b81526004016102a39061164f565b5090565b6000811580610ff557505080820282828281610ff257fe5b04145b610f845760405162461bcd60e51b81526004016102a390611686565b60006001600160801b03821115610fd65760405162461bcd60e51b81526004016102a390611577565b8181016001600160801b038083169082161015610f845760405162461bcd60e51b81526004016102a3906115ae565b60006060846001600160a01b031663a9059cbb858560405160240161108f9291906113cb565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516110c8919061137e565b6000604051808303816000865af19150503d8060008114611105576040519150601f19603f3d011682016040523d82523d6000602084013e61110a565b606091505b5091509150818015611134575080511580611134575080806020019051810190611134919061122f565b6111505760405162461bcd60e51b81526004016102a3906114d0565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561118b578283fd5b833561119681611761565b925060208401356111a681611779565b915060408401356111b681611779565b809150509250925092565b600080602083850312156111d3578182fd5b82356001600160401b03808211156111e9578384fd5b818501915085601f8301126111fc578384fd5b81358181111561120a578485fd5b866020808302850101111561121d578485fd5b60209290920196919550909350505050565b600060208284031215611240578081fd5b815161124b81611779565b9392505050565b600060208284031215611263578081fd5b815161124b81611761565b60006020828403121561127f578081fd5b5035919050565b600060208284031215611297578081fd5b5051919050565b600080604083850312156112b0578182fd5b8235915060208301356112c281611761565b809150509250929050565b600080600080600060a086880312156112e4578081fd5b8535945060208601356112f681611761565b9350604086013561130681611761565b94979396509394606081013594506080013592915050565b600080600060608486031215611332578283fd5b83359250602084013561134481611761565b929592945050506040919091013590565b60008060408385031215611367578182fd5b50508035926020909101359150565b815260200190565b60008251815b8181101561139e5760208186018101518583015201611384565b818111156113ac5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156114265781516001600160a01b031684529284019290840190600101611401565b5050508381038285015280855161143d8184611720565b91508387019250845b8181101561146757611459838551611376565b938501939250600101611446565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461177657600080fd5b50565b801515811461177657600080fdfea26469706673582212200a511ef23e6b6e7ed2c46874a31770edeae2072ba0a81bbb63d19ba135a9dd1864736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x66DA5815 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x8F10369A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F10369A EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xAD3B6836 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x271 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x66DA5815 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x69883B4E EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x771602F7 EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1FF JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x48E43AF4 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x48E43AF4 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x1B3 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x1AB06EE5 EQ PUSH2 0x165 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x279 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12D PUSH2 0x368 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x36E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x173 CALLDATASIZE PUSH1 0x4 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x3A5 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x186 CALLDATASIZE PUSH1 0x4 PUSH2 0x129E JUMP JUMPDEST PUSH2 0x484 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x712 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x1A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x79F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0xA9D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0xAD3 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0xB3D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0xB5B JUMP JUMPDEST PUSH2 0x207 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH2 0x12D PUSH2 0xD00 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0x129E JUMP JUMPDEST PUSH2 0xD06 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP3 SWAP2 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x12CD JUMP JUMPDEST PUSH2 0xD2A JUMP JUMPDEST PUSH2 0x263 PUSH2 0x25E CALLDATASIZE PUSH1 0x4 PUSH2 0x131E JUMP JUMPDEST PUSH2 0xE93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP3 SWAP2 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x207 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x347 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x2C6 JUMPI POP DUP1 JUMPDEST PUSH2 0x2E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1548 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH2 0x406 SWAP2 DUP4 SWAP2 PUSH2 0x400 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF61 JUMP JUMPDEST SWAP1 PUSH2 0xF8A JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x412 DUP2 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x942CC7E17A17C164BD977F32AB8C54265D5B9D481E4E352BF874F1E568874E7C SWAP1 PUSH2 0x478 SWAP1 DUP5 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48E PUSH2 0x1157 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE DUP8 DUP6 MSTORE PUSH1 0x4 DUP1 DUP6 MSTORE DUP4 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP9 MSTORE SWAP6 MSTORE DUP4 DUP7 KECCAK256 DUP4 MLOAD SWAP5 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP1 SWAP6 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x78ED5D1F SWAP2 PUSH2 0x548 SWAP2 DUP12 SWAP2 ADD PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x574 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x598 SWAP2 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E3 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x60F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x633 SWAP2 SWAP1 PUSH2 0x1286 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x650 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 PUSH2 0x677 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0xF61 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x6AA DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x6A4 PUSH1 0x6 SLOAD DUP7 PUSH2 0xFDA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x6B1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x6D7 DUP4 PUSH2 0x6C7 DUP4 PUSH5 0xE8D4A51000 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x6CE JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0xF8A JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x707 SWAP2 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6F9 SWAP1 DUP7 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x700 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF61 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x161A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A7 PUSH2 0x1157 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE TIMESTAMP GT ISZERO PUSH2 0xA98 JUMPI PUSH1 0x40 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x78ED5D1F SWAP1 PUSH2 0x84D SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x879 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x89D SWAP2 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8E8 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x938 SWAP2 SWAP1 PUSH2 0x1286 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 PUSH2 0x962 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0xF61 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x98F DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x6A4 PUSH1 0x6 SLOAD DUP7 PUSH2 0xFDA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x996 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x9CD PUSH2 0x9BC DUP5 PUSH2 0x9AF DUP5 PUSH5 0xE8D4A51000 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x9B6 JUMPI INVALID JUMPDEST DIV PUSH2 0x1011 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x103A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x9E4 TIMESTAMP PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP5 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 MLOAD DUP4 DUP9 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP9 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP6 SWAP1 SWAP7 AND SWAP5 SWAP1 SWAP5 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0xA8E SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x1737 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xACD JUMPI PUSH2 0xAC4 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xAB8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x79F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xAA1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xDE89CB17AC7F58F94792B3E91E086ED85403819C24CEEA882491F960CCB1A278 SWAP1 PUSH2 0xB32 SWAP1 DUP4 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB4A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB85 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND ISZERO PUSH2 0xBC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x14A3 JUMP JUMPDEST PUSH1 0x5 SLOAD TIMESTAMP SWAP1 PUSH2 0xBD0 SWAP1 DUP5 PUSH2 0xF8A JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0xBEF DUP4 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC06 DUP6 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 DUP8 ADD MLOAD SWAP7 DUP4 ADD MLOAD DUP7 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP8 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR AND SWAP3 SWAP1 SWAP3 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x38410508059921573AB9EBDCA2A5034BE738D236366B8F32DE4434EA95ED3C81 SWAP1 PUSH2 0xCE4 SWAP1 DUP7 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1507 JUMP JUMPDEST PUSH2 0xD7A PUSH2 0x1157 JUMP JUMPDEST PUSH2 0xD83 DUP7 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 ISZERO PUSH2 0xE0D JUMPI PUSH1 0x1 DUP3 ADD SLOAD DUP4 MLOAD DUP4 SLOAD PUSH2 0xDD7 SWAP3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x6F9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP PUSH2 0xE0D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 DUP4 PUSH2 0x1069 JUMP JUMPDEST DUP4 DUP3 SSTORE DUP3 MLOAD PUSH5 0xE8D4A51000 SWAP1 PUSH2 0xE2D SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0xE34 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ECE88CA2BC08DD018DB50E1D25A20BF1241E5FAB1C396CAA51F01A54BD2F75B DUP5 PUSH1 0x40 MLOAD PUSH2 0xE81 SWAP2 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEE7 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xF2E DUP8 DUP8 PUSH2 0x484 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF3B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1474 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x164F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xFF5 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xFF2 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1577 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x108F SWAP3 SWAP2 SWAP1 PUSH2 0x13CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL 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 PUSH2 0x10C8 SWAP2 SWAP1 PUSH2 0x137E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1105 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 0x110A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1134 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1134 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1134 SWAP2 SWAP1 PUSH2 0x122F JUMP JUMPDEST PUSH2 0x1150 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x14D0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x118B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1196 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x11A6 DUP2 PUSH2 0x1779 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x11B6 DUP2 PUSH2 0x1779 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11D3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x11E9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11FC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x120A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x121D JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1240 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x124B DUP2 PUSH2 0x1779 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1263 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x124B DUP2 PUSH2 0x1761 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x127F JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1297 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12B0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x12C2 DUP2 PUSH2 0x1761 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x12E4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x12F6 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1306 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1332 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1344 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1367 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x139E JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x1384 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x13AC JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1426 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1401 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x143D DUP2 DUP5 PUSH2 0x1720 JUMP JUMPDEST SWAP2 POP DUP4 DUP8 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1467 JUMPI PUSH2 0x1459 DUP4 DUP6 MLOAD PUSH2 0x1376 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x1446 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x506F6F6C20616C726561647920657869737473 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C79204D4356322063616E2063616C6C20746869732066756E6374696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP MLOAD 0x1E CALLCODE RETURNDATACOPY PUSH12 0x6E7ED2C46874A31770EDEAE2 SMOD 0x2B LOG0 0xA8 SHL 0xBB PUSH4 0xD19BA135 0xA9 0xDD XOR PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "399:7220:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472:1;;;;;;:::i;:::-;;:::i;:::-;;3972:97:11;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1180:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;5007:263::-;;;;;;:::i;:::-;;:::i;5476:800::-;;;;;;:::i;:::-;;:::i;1295:348:1:-;;;:::i;6815:802:11:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6451:188::-;;;;;;:::i;:::-;;:::i;3621:173::-;;;;;;:::i;:::-;;:::i;1231:24::-;;;;;;:::i;:::-;;:::i;4315:461::-;;;;;;:::i;:::-;;:::i;350:20:1:-;;;:::i;:::-;;;;;;;:::i;1509:30:11:-;;;:::i;1316:64::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2325:661::-;;;;;;:::i;:::-;;:::i;2992:450::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;397:27:1:-;;;:::i;774:472::-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;;-1:-1:-1::0;;;925:68:1::1;;;;;;;:::i;:::-;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;3972:97:11:-;4048:7;:14;;3972:97::o;1180:44::-;;;;;;;;;;;;-1:-1:-1;;;;;1180:44:11;;;-1:-1:-1;;;;;;;;1180:44:11;;;;;-1:-1:-1;;;1180:44:11;;;;:::o;5007:263::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5120:14:11::1;::::0;;;:8:::1;:14;::::0;;;;:25;5100:15:::1;::::0;:63:::1;::::0;5151:11;;5100:46:::1;::::0;-1:-1:-1;;;5120:25:11;::::1;-1:-1:-1::0;;;;;5120:25:11::1;5100:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;5082:15;:81:::0;5201:18:::1;:11:::0;:16:::1;:18::i;:::-;5173:14;::::0;;;:8:::1;:14;::::0;;;;;;:46;;-1:-1:-1;;;;;5173:46:11;;;::::1;-1:-1:-1::0;;;5173:46:11::1;-1:-1:-1::0;;;;;5173:46:11;;::::1;::::0;;;::::1;::::0;;;5234:29;5182:4;;5234:29:::1;::::0;::::1;::::0;5251:11;;5234:29:::1;:::i;:::-;;;;;;;;5007:263:::0;;:::o;5476:800::-;5548:15;5575:20;;:::i;:::-;-1:-1:-1;5598:14:11;;;;:8;:14;;;;;;;;5575:37;;;;;;;;;-1:-1:-1;;;;;5575:37:11;;;;;-1:-1:-1;;;;;;;;5575:37:11;;;;;;;;-1:-1:-1;;;5575:37:11;;;;;;;;;;5646:14;;;:8;:14;;;;;;-1:-1:-1;;;;;5646:21:11;;;;;;;;;;5704;;5754:41;;-1:-1:-1;;;5754:41:11;;5575:37;;5646:21;;5677:48;;;;;5598:14;;5767:13;5754:35;;;;;;:41;;5607:4;;5754:41;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5754:51:11;;5806:13;5754:66;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5735:85;;5852:4;:19;;;-1:-1:-1;;;;;5834:37:11;:15;:37;:54;;;;-1:-1:-1;5875:13:11;;;5834:54;5830:342;;;5904:12;5919:40;5939:4;:19;;;-1:-1:-1;;;;;5919:40:11;:15;:19;;:40;;;;:::i;:::-;5904:55;;5973:19;6044:15;;5995:46;6025:4;:15;;;-1:-1:-1;;;;;5995:46:11;:25;6004:15;;5995:4;:8;;:25;;;;:::i;:::-;:29;;:46::i;:::-;:64;;;;;;;-1:-1:-1;6092:69:11;6152:8;6113:36;5995:64;1592:4;6113:15;:36::i;:::-;:47;;;;;6092:16;;6113:47;;6092:20;:69::i;:::-;6073:88;;5830:342;;;6253:15;;;;6192:11;;6191:78;;6253:15;1592:4;;6192:33;;6208:16;6192:15;:33::i;:::-;:55;;;;;;;6191:61;:78::i;:::-;6181:88;5476:800;-1:-1:-1;;;;;;;5476:800:11:o;1295:348:1:-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;-1:-1:-1;;;1415:72:1;;;;;;;:::i;:::-;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;6815:802:11:-;6864:20;;:::i;:::-;-1:-1:-1;6903:13:11;;;;:8;:13;;;;;;;;;6896:20;;;;;;;;;-1:-1:-1;;;;;6896:20:11;;;;-1:-1:-1;;;;;;;;6896:20:11;;;;;;;;;;-1:-1:-1;;;6896:20:11;;;;;;;;;;;6930:15;:37;6926:685;;;7002:40;;-1:-1:-1;;;7002:40:11;;6983:16;;-1:-1:-1;;;;;7015:13:11;7002:35;;;;:40;;7038:3;;7002:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7002:50:11;;7053:13;7002:65;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6983:84;-1:-1:-1;7086:12:11;;7082:336;;7118:12;7133:40;7153:4;:19;;;-1:-1:-1;;;;;7133:40:11;:15;:19;;:40;;;;:::i;:::-;7118:55;;7191:19;7262:15;;7213:46;7243:4;:15;;;-1:-1:-1;;;;;7213:46:11;:25;7222:15;;7213:4;:8;;:25;;;;:::i;:46::-;:64;;;;;;;-1:-1:-1;7319:84:11;7345:57;7385:8;7346:36;7213:64;1592:4;7346:15;:36::i;:::-;:47;;;;;;7345:55;:57::i;:::-;7319:21;;-1:-1:-1;;;;;7319:25:11;;;:84::i;:::-;-1:-1:-1;;;;;7295:108:11;;;-1:-1:-1;;7082:336:11;7453:22;:15;:20;:22::i;:::-;-1:-1:-1;;;;;7431:44:11;;;:19;;;;:44;;;7489:13;;;;:8;:13;;;;;;;;:20;;;;;;;;;;-1:-1:-1;;;;;;7489:20:11;;;-1:-1:-1;;;;;7489:20:11;;;-1:-1:-1;;;;7489:20:11;-1:-1:-1;;;7489:20:11;;;;;-1:-1:-1;;;;;7489:20:11;-1:-1:-1;;;7489:20:11;;;;;;;;;;;;;;7528:72;7489:13;;7528:72;;;;7489:20;;7568:8;;7528:72;:::i;:::-;;;;;;;;6926:685;;6815:802;;;:::o;6451:188::-;6534:4;6520:11;6555:78;6579:3;6575:1;:7;6555:78;;;6603:19;6614:4;;6619:1;6614:7;;;;;;;;;;;;;6603:10;:19::i;:::-;-1:-1:-1;6584:3:11;;6555:78;;;;6451:188;;;:::o;3621:173::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;3702:15:11::1;:34:::0;;;3751:36:::1;::::0;::::1;::::0;::::1;::::0;3720:16;;3751:36:::1;:::i;:::-;;;;;;;;3621:173:::0;:::o;1231:24::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1231:24:11;:::o;4315:461::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;4397:14:11::1;::::0;;;:8:::1;:14;::::0;;;;:29;-1:-1:-1;;;4397:29:11;::::1;-1:-1:-1::0;;;;;4397:29:11::1;:34:::0;4389:66:::1;;;;-1:-1:-1::0;;;4389:66:11::1;;;;;;;:::i;:::-;4533:15;::::0;4490::::1;::::0;4533:31:::1;::::0;4553:10;4533:19:::1;:31::i;:::-;4515:15;:49:::0;4592:101:::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;4592:101:11;;::::1;::::0;::::1;4649:21;:14:::0;:19:::1;:21::i;:::-;-1:-1:-1::0;;;;;4592:101:11::1;;;;;4614:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;4592:101:11;;::::1;::::0;;;4575:14:::1;::::0;;;:8:::1;:14;::::0;;;;;;;:118;;;;;;::::1;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;;4575:118:11::1;-1:-1:-1::0;;;;;4575:118:11;;;::::1;-1:-1:-1::0;;;4575:118:11::1;-1:-1:-1::0;;;;;;;;;4575:118:11;;::::1;-1:-1:-1::0;;;;;;4575:118:11;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;4703:7:::1;:18:::0;;4575:118;4703:18;::::1;::::0;;;;;::::1;::::0;;;4736:33;4584:4;;4736:33:::1;::::0;::::1;::::0;4758:10;;4736:33:::1;:::i;:::-;;;;;;;;1799:1:1;4315:461:11::0;;:::o;350:20:1:-;;;-1:-1:-1;;;;;350:20:1;;:::o;1509:30:11:-;;;;:::o;1316:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2325:661::-;3836:10;-1:-1:-1;;;;;3850:13:11;3836:27;;3828:73;;;;-1:-1:-1;;;3828:73:11;;;;;;;:::i;:::-;2497:20:::1;;:::i;:::-;2520:15;2531:3;2520:10;:15::i;:::-;2545:21;2569:13:::0;;;:8:::1;:13;::::0;;;;;;;-1:-1:-1;;;;;2569:20:11;::::1;::::0;;;;;;;2628:11;;2497:38;;-1:-1:-1;2569:20:11;2628:15;2624:190:::1;;2736:15;::::0;::::1;::::0;2686:21;;2670:11;;2669:83:::1;::::0;2736:15;1592:4:::1;::::0;2670:38:::1;::::0;-1:-1:-1;;;;;2670:38:11::1;:15;:38::i;2669:83::-;2659:93:::0;-1:-1:-1;2766:37:11::1;-1:-1:-1::0;;;;;2766:11:11::1;:24;2791:2:::0;2659:93;2766:24:::1;:37::i;:::-;2823:21:::0;;;2884;;1592:4:::1;::::0;2872:34:::1;::::0;2837:7;;-1:-1:-1;;;;;2872:34:11::1;:11;:34::i;:::-;:56;;;;;;2854:4;:15;;:74;;;;2976:2;-1:-1:-1::0;;;;;2943:36:11::1;2962:3;2955:5;-1:-1:-1::0;;;;;2943:36:11::1;;2967:7;2943:36;;;;;;:::i;:::-;;;;;;;;3911:1;;;2325:661:::0;;;;;:::o;2992:450::-;3217:15;;;3230:1;3217:15;;;;;;;;;3113:28;;;;;;3217:15;;;;;;;;;;;-1:-1:-1;3217:15:11;3185:47;;3262:11;3242:13;3256:1;3242:16;;;;;;;;-1:-1:-1;;;;;3242:32:11;;;;:16;;;;;;;;;;;:32;3318:16;;;3332:1;3318:16;;;;;;;;;3284:31;;3318:16;;;;;;;;;;;;-1:-1:-1;3318:16:11;3284:50;;3364:23;3377:3;3382:4;3364:12;:23::i;:::-;3344:14;3359:1;3344:17;;;;;;;;;;;;;;;;;:43;3405:13;;;;-1:-1:-1;2992:450:11;-1:-1:-1;;;;2992:450:11:o;397:27:1:-;;;-1:-1:-1;;;;;397:27:1;;:::o;342:122:4:-;425:5;;;420:16;;;;412:50;;;;-1:-1:-1;;;412:50:4;;;;;;;:::i;:::-;342:122;;;;:::o;211:125::-;294:5;;;289:16;;;;281:53;;;;-1:-1:-1;;;281:53:4;;;;;;;:::i;780:156::-;828:8;-1:-1:-1;;;;;857:15:4;;;849:55;;;;-1:-1:-1;;;849:55:4;;;;;;;:::i;:::-;-1:-1:-1;926:1:4;780:156::o;470:137::-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;-1:-1:-1;;;540:65:4;;;;;;;:::i;613:161::-;662:9;-1:-1:-1;;;;;692:16:4;;;684:57;;;;-1:-1:-1;;;684:57:4;;;;;;;:::i;1134:125::-;1217:5;;;-1:-1:-1;;;;;1212:16:4;;;;;;;;1204:53;;;;-1:-1:-1;;;1204:53:4;;;;;;;:::i;951:304:3:-;1036:12;1050:17;1079:5;-1:-1:-1;;;;;1071:19:3;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1149:98;;;;-1:-1:-1;;;1149:98:3;;;;;;;:::i;:::-;951:304;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1233:479::-;;;;1365:2;1353:9;1344:7;1340:23;1336:32;1333:2;;;-1:-1;;1371:12;1333:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1423:63;-1:-1;1523:2;1559:22;;584:20;609:30;584:20;609:30;:::i;:::-;1531:60;-1:-1;1628:2;1664:22;;584:20;609:30;584:20;609:30;:::i;:::-;1636:60;;;;1327:385;;;;;:::o;1719:397::-;;;1858:2;1846:9;1837:7;1833:23;1829:32;1826:2;;;-1:-1;;1864:12;1826:2;1922:17;1909:31;-1:-1;;;;;1960:18;1952:6;1949:30;1946:2;;;-1:-1;;1982:12;1946:2;2083:6;2072:9;2068:22;;;290:3;283:4;275:6;271:17;267:27;257:2;;-1:-1;;298:12;257:2;341:6;328:20;1960:18;360:6;357:30;354:2;;;-1:-1;;390:12;354:2;485:3;1858:2;;469:6;465:17;426:6;451:32;;448:41;445:2;;;-1:-1;;492:12;445:2;1858;422:17;;;;;2002:98;;-1:-1;1820:296;;-1:-1;;;;1820:296::o;2123:257::-;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;-1:-1;;2241:12;2203:2;732:6;726:13;744:30;768:5;744:30;:::i;:::-;2293:71;2197:183;-1:-1;;;2197:183::o;2387:291::-;;2516:2;2504:9;2495:7;2491:23;2487:32;2484:2;;;-1:-1;;2522:12;2484:2;884:6;878:13;896:47;937:5;896:47;:::i;2685:241::-;;2789:2;2777:9;2768:7;2764:23;2760:32;2757:2;;;-1:-1;;2795:12;2757:2;-1:-1;1022:20;;2751:175;-1:-1;2751:175::o;2933:263::-;;3048:2;3036:9;3027:7;3023:23;3019:32;3016:2;;;-1:-1;;3054:12;3016:2;-1:-1;1170:13;;3010:186;-1:-1;3010:186::o;3203:366::-;;;3324:2;3312:9;3303:7;3299:23;3295:32;3292:2;;;-1:-1;;3330:12;3292:2;1035:6;1022:20;3382:63;;3482:2;3525:9;3521:22;72:20;97:33;124:5;97:33;:::i;:::-;3490:63;;;;3286:283;;;;;:::o;3576:743::-;;;;;;3748:3;3736:9;3727:7;3723:23;3719:33;3716:2;;;-1:-1;;3755:12;3716:2;1035:6;1022:20;3807:63;;3907:2;3950:9;3946:22;72:20;97:33;124:5;97:33;:::i;:::-;3915:63;-1:-1;4015:2;4054:22;;72:20;97:33;72:20;97:33;:::i;:::-;3710:609;;;;-1:-1;4023:63;;4123:2;4162:22;;1022:20;;-1:-1;4231:3;4271:22;1022:20;;3710:609;-1:-1;;3710:609::o;4326:491::-;;;;4464:2;4452:9;4443:7;4439:23;4435:32;4432:2;;;-1:-1;;4470:12;4432:2;1035:6;1022:20;4522:63;;4622:2;4665:9;4661:22;72:20;97:33;124:5;97:33;:::i;:::-;4426:391;;4630:63;;-1:-1;;;4730:2;4769:22;;;;1022:20;;4426:391::o;4824:366::-;;;4945:2;4933:9;4924:7;4920:23;4916:32;4913:2;;;-1:-1;;4951:12;4913:2;-1:-1;;1022:20;;;5103:2;5142:22;;;1022:20;;-1:-1;4907:283::o;5408:173::-;12652:37;;5570:4;5561:14;;5488:93::o;13045:271::-;;7405:5;21448:12;-1:-1;23909:101;23923:6;23920:1;23917:13;23909:101;;;7549:4;23990:11;;;;;23984:18;23971:11;;;23964:39;23938:10;23909:101;;;24025:6;24022:1;24019:13;24016:2;;;-1:-1;24081:6;24076:3;24072:16;24065:27;24016:2;-1:-1;7580:16;;;;;13179:137;-1:-1;;13179:137::o;13323:222::-;-1:-1;;;;;23188:54;;;;5660:37;;13450:2;13435:18;;13421:124::o;13552:333::-;-1:-1;;;;;23188:54;;;;5660:37;;13871:2;13856:18;;12652:37;13707:2;13692:18;;13678:207::o;13892:657::-;14161:2;14175:47;;;21448:12;;14146:18;;;22124:19;;;13892:657;;22173:4;;22164:14;;;;21130;;;13892:657;6198:288;6223:6;6220:1;6217:13;6198:288;;;6284:13;;-1:-1;;;;;23188:54;7683:64;;5379:14;;;;21864;;;;1960:18;6238:9;6198:288;;;6202:14;;;14406:9;14400:4;14396:20;22173:4;14380:9;14376:18;14369:48;14431:108;6740:5;21448:12;6759:86;6838:6;6833:3;6759:86;:::i;:::-;6752:93;;22173:4;6916:5;21130:14;6928:21;;-1:-1;6955:260;6980:6;6977:1;6974:13;6955:260;;;7068:63;7127:3;7047:6;7041:13;7068:63;:::i;:::-;21864:14;;;;7061:70;-1:-1;6245:1;6995:9;6955:260;;;-1:-1;14423:116;;14132:417;-1:-1;;;;;;;14132:417::o;14556:416::-;14756:2;14770:47;;;7984:2;14741:18;;;22124:19;-1:-1;;;22164:14;;;8000:44;8063:12;;;14727:245::o;14979:416::-;15179:2;15193:47;;;8314:2;15164:18;;;22124:19;-1:-1;;;22164:14;;;8330:42;8391:12;;;15150:245::o;15402:416::-;15602:2;15616:47;;;8642:2;15587:18;;;22124:19;8678:30;22164:14;;;8658:51;8728:12;;;15573:245::o;15825:416::-;16025:2;16039:47;;;8979:2;16010:18;;;22124:19;9015:34;22164:14;;;8995:55;-1:-1;;;9070:12;;;9063:25;9107:12;;;15996:245::o;16248:416::-;16448:2;16462:47;;;9358:2;16433:18;;;22124:19;-1:-1;;;22164:14;;;9374:44;9437:12;;;16419:245::o;16671:416::-;16871:2;16885:47;;;9688:2;16856:18;;;22124:19;9724:30;22164:14;;;9704:51;9774:12;;;16842:245::o;17094:416::-;17294:2;17308:47;;;10025:2;17279:18;;;22124:19;10061:26;22164:14;;;10041:47;10107:12;;;17265:245::o;17517:416::-;17717:2;17731:47;;;17702:18;;;22124:19;10394:34;22164:14;;;10374:55;10448:12;;;17688:245::o;17940:416::-;18140:2;18154:47;;;18125:18;;;22124:19;10735:34;22164:14;;;10715:55;10789:12;;;18111:245::o;18363:416::-;18563:2;18577:47;;;11040:2;18548:18;;;22124:19;11076:29;22164:14;;;11056:50;11125:12;;;18534:245::o;18786:416::-;18986:2;19000:47;;;11376:2;18971:18;;;22124:19;11412:26;22164:14;;;11392:47;11458:12;;;18957:245::o;19209:326::-;11788:23;;-1:-1;;;;;23068:46;12289:37;;11969:4;11958:16;;;11952:23;-1:-1;;;;;23394:30;;;12027:14;;;12880:36;;;;12127:4;12116:16;;;12110:23;23394:30;12185:14;;;12880:36;;;;19388:2;19373:18;;19359:176::o;19542:436::-;-1:-1;;;;;23068:46;;;;12289:37;;-1:-1;;;;;23394:30;;;19883:2;19868:18;;12880:36;23394:30;19964:2;19949:18;;12880:36;19721:2;19706:18;;19692:286::o;19985:222::-;12652:37;;;20112:2;20097:18;;20083:124::o;20214:333::-;12652:37;;;20533:2;20518:18;;12652:37;20369:2;20354:18;;20340:207::o;20554:440::-;-1:-1;;;;;23394:30;;;;12880:36;;20897:2;20882:18;;12652:37;;;;-1:-1;;;;;23068:46;20980:2;20965:18;;12529:50;20735:2;20720:18;;20706:288::o;24113:117::-;-1:-1;;;;;23188:54;;24172:35;;24162:2;;24221:1;;24211:12;24162:2;24156:74;:::o;24237:111::-;24318:5;22868:13;22861:21;24296:5;24293:32;24283:2;;24339:1;;24329:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1215400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "add(uint256,uint256)": "infinite",
                "claimOwnership()": "45067",
                "massUpdatePools(uint256[])": "infinite",
                "onPichiReward(uint256,address,address,uint256,uint256)": "infinite",
                "owner()": "1159",
                "pendingOwner()": "1180",
                "pendingToken(uint256,address)": "infinite",
                "pendingTokens(uint256,address,uint256)": "infinite",
                "poolIds(uint256)": "2041",
                "poolInfo(uint256)": "1411",
                "poolLength()": "1074",
                "rewardPerSecond()": "1050",
                "set(uint256,uint256)": "infinite",
                "setRewardPerSecond(uint256)": "22188",
                "transferOwnership(address,bool,bool)": "infinite",
                "updatePool(uint256)": "infinite",
                "userInfo(uint256,address)": "2226"
              }
            },
            "methodIdentifiers": {
              "add(uint256,uint256)": "771602f7",
              "claimOwnership()": "4e71e0c8",
              "massUpdatePools(uint256[])": "57a5b58c",
              "onPichiReward(uint256,address,address,uint256,uint256)": "ad3b6836",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "pendingToken(uint256,address)": "48e43af4",
              "pendingTokens(uint256,address,uint256)": "d63b3c49",
              "poolIds(uint256)": "69883b4e",
              "poolInfo(uint256)": "1526fe27",
              "poolLength()": "081e3eda",
              "rewardPerSecond()": "8f10369a",
              "set(uint256,uint256)": "1ab06ee5",
              "setRewardPerSecond(uint256)": "66da5815",
              "transferOwnership(address,bool,bool)": "078dfbe7",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_MASTERCHEF_V2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"LogInit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"LogOnReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"}],\"name\":\"LogPoolAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardPerSecond\",\"type\":\"uint256\"}],\"name\":\"LogRewardPerSecond\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"}],\"name\":\"LogSetPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accPichiPerShare\",\"type\":\"uint256\"}],\"name\":\"LogUpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpToken\",\"type\":\"uint256\"}],\"name\":\"onPichiReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accPichiPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardPerSecond\",\"type\":\"uint256\"}],\"name\":\"setRewardPerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accPichiPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct ComplexRewarderTime.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"@0xKeno\",\"kind\":\"dev\",\"methods\":{\"add(uint256,uint256)\":{\"details\":\"Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.\",\"params\":{\"_pid\":\"Pid on MCV2\",\"allocPoint\":\"AP of the new pool.\"}},\"massUpdatePools(uint256[])\":{\"details\":\"Update reward variables for all pools. Be careful of gas spending!\",\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"pendingToken(uint256,address)\":{\"details\":\"View function to see pending Token\",\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"PICHI reward for a given user.\"}},\"poolLength()\":{\"details\":\"Returns the number of MCV2 pools.\"},\"set(uint256,uint256)\":{\"details\":\"Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\",\"params\":{\"_allocPoint\":\"New AP of the pool.\",\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"setRewardPerSecond(uint256)\":{\"details\":\"Sets the pichi per second to be distributed. Can only be called by the owner.\",\"params\":{\"_rewardPerSecond\":\"The amount of Pichi to be distributed per second.\"}},\"updatePool(uint256)\":{\"details\":\"Update reward variables of the given pool.\",\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}}},\"stateVariables\":{\"poolInfo\":{\"details\":\"Info of each pool.\"},\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"},\"userInfo\":{\"details\":\"Info of each user that stakes LP tokens.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/ComplexRewarderTime.sol\":\"ComplexRewarderTime\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/MasterChefV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IMasterChef.sol\\\";\\n\\ninterface IMigratorChef {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\\n/// It is the only address with minting rights for PICHI.\\n/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the MasterChef V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract MasterChefV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @dev Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of PICHI entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @dev Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of PICHI to distribute per block.\\n    struct PoolInfo {\\n        uint128 accPichiPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @dev Address of MCV1 contract.\\n    IMasterChef public immutable MASTER_CHEF;\\n    /// @dev Address of PICHI contract.\\n    IERC20 public immutable PICHI;\\n    /// @dev The index of MCV2 master pool in MCV1.\\n    uint256 public immutable MASTER_PID;\\n    // @dev The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorChef public migrator;\\n\\n    /// @dev Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @dev Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @dev Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @dev Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 private constant MASTERCHEF_PICHI_PER_BLOCK = 1e20;\\n    uint256 private constant ACC_PICHI_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accPichiPerShare);\\n    event LogInit();\\n\\n    /// @param _MASTER_CHEF The PolyCityDex MCV1 contract address.\\n    /// @param _pichi The PICHI token contract address.\\n    /// @param _MASTER_PID The pool ID of the dummy token on the base MCV1 contract.\\n    constructor(IMasterChef _MASTER_CHEF, IERC20 _pichi, uint256 _MASTER_PID) public {\\n        MASTER_CHEF = _MASTER_CHEF;\\n        PICHI = _pichi;\\n        MASTER_PID = _MASTER_PID;\\n    }\\n\\n    /// @dev Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting rights for PICHI.\\n    /// Any balance of transaction sender in `dummyToken` is transferred.\\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\\n    function init(IERC20 dummyToken) external {\\n        uint256 balance = dummyToken.balanceOf(msg.sender);\\n        require(balance != 0, \\\"MasterChefV2: Balance must exceed 0\\\");\\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\\n        dummyToken.approve(address(MASTER_CHEF), balance);\\n        MASTER_CHEF.deposit(MASTER_PID, balance);\\n        emit LogInit();\\n    }\\n\\n    /// @dev Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accPichiPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @dev Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @dev Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"MasterChefV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"MasterChefV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @dev View function to see pending PICHI on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending PICHI reward for a given user.\\n    function pendingPichi(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accPichiPerShare = pool.accPichiPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accPichiPerShare) / ACC_PICHI_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @dev Calculates and returns the `amount` of PICHI per block.\\n    function pichiPerBlock() public view returns (uint256 amount) {\\n        amount = uint256(MASTERCHEF_PICHI_PER_BLOCK)\\n            .mul(MASTER_CHEF.poolInfo(MASTER_PID).allocPoint) / MASTER_CHEF.totalAllocPoint();\\n    }\\n\\n    /// @dev Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 pichiReward = blocks.mul(pichiPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_PICHI_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accPichiPerShare);\\n        }\\n    }\\n\\n    /// @dev Deposit LP tokens to MCV2 for PICHI allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n        \\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @dev Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of PICHI rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi;\\n\\n        // Interactions\\n        if (_pendingPichi != 0) {\\n            PICHI.safeTransfer(to, _pendingPichi);\\n        }\\n        \\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward( pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n    \\n    /// @dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and PICHI rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedPichi = int256(user.amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION);\\n        uint256 _pendingPichi = accumulatedPichi.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedPichi.sub(int256(amount.mul(pool.accPichiPerShare) / ACC_PICHI_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n        \\n        // Interactions\\n        PICHI.safeTransfer(to, _pendingPichi);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, _pendingPichi, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingPichi);\\n    }\\n\\n    /// @dev Harvests PICHI from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to this MCV2 contract.\\n    function harvestFromMasterChef() public {\\n        MASTER_CHEF.deposit(MASTER_PID, 0);\\n    }\\n\\n    /// @dev Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onPichiReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xce80632a87f022eab3609a722ecb72d4f4da124f401d0a68607c28b74a763169\",\"license\":\"MIT\"},\"contracts/interfaces/IMasterChef.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IMasterChef {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount; // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken; // Address of LP token contract.\\n        uint256 allocPoint; // How many allocation points assigned to this pool. PICHI to distribute per block.\\n        uint256 lastRewardBlock; // Last block number that PICHI distribution occurs.\\n        uint256 accPichiPerShare; // Accumulated PICHI per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);\\n\\n    function totalAllocPoint() external view returns (uint256);\\n\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0x2ade0f4bcab4f5537b20ae75ba2099f507b6c620bb81427cf4e687fd057216e1\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 private constant _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\\n\",\"keccak256\":\"0x42b350cf39c1685e9a37835d6e6fb66e27362ccdf38a165f5030c2eb8bccc938\",\"license\":\"MIT\"},\"contracts/mocks/ComplexRewarderTime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"../interfaces/IRewarder.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"../MasterChefV2.sol\\\";\\n\\n/// @author @0xKeno\\ncontract ComplexRewarderTime is IRewarder, BoringOwnable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n\\n    IERC20 private immutable rewardToken;\\n\\n    /// @dev Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of PICHI entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        uint256 rewardDebt;\\n    }\\n\\n    /// @dev Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of PICHI to distribute per block.\\n    struct PoolInfo {\\n        uint128 accPichiPerShare;\\n        uint64 lastRewardTime;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @dev Info of each pool.\\n    mapping(uint256 => PoolInfo) public poolInfo;\\n\\n    uint256[] public poolIds;\\n\\n    /// @dev Info of each user that stakes LP tokens.\\n    mapping(uint256 => mapping(address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 totalAllocPoint;\\n\\n    uint256 public rewardPerSecond;\\n    uint256 private constant ACC_TOKEN_PRECISION = 1e12;\\n\\n    address private immutable MASTERCHEF_V2;\\n\\n    event LogOnReward(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accPichiPerShare);\\n    event LogRewardPerSecond(uint256 rewardPerSecond);\\n    event LogInit();\\n\\n    constructor(\\n        IERC20 _rewardToken,\\n        uint256 _rewardPerSecond,\\n        address _MASTERCHEF_V2\\n    ) public {\\n        rewardToken = _rewardToken;\\n        rewardPerSecond = _rewardPerSecond;\\n        MASTERCHEF_V2 = _MASTERCHEF_V2;\\n    }\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address _user,\\n        address to,\\n        uint256,\\n        uint256 lpToken\\n    ) external override onlyMCV2 {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][_user];\\n        uint256 pending;\\n        if (user.amount > 0) {\\n            pending = (user.amount.mul(pool.accPichiPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\\n            rewardToken.safeTransfer(to, pending);\\n        }\\n        user.amount = lpToken;\\n        user.rewardDebt = lpToken.mul(pool.accPichiPerShare) / ACC_TOKEN_PRECISION;\\n        emit LogOnReward(_user, pid, pending, to);\\n    }\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256\\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\\n        IERC20[] memory _rewardTokens = new IERC20[](1);\\n        _rewardTokens[0] = (rewardToken);\\n        uint256[] memory _rewardAmounts = new uint256[](1);\\n        _rewardAmounts[0] = pendingToken(pid, user);\\n        return (_rewardTokens, _rewardAmounts);\\n    }\\n\\n    /// @dev Sets the pichi per second to be distributed. Can only be called by the owner.\\n    /// @param _rewardPerSecond The amount of Pichi to be distributed per second.\\n    function setRewardPerSecond(uint256 _rewardPerSecond) public onlyOwner {\\n        rewardPerSecond = _rewardPerSecond;\\n        emit LogRewardPerSecond(_rewardPerSecond);\\n    }\\n\\n    modifier onlyMCV2 {\\n        require(msg.sender == MASTERCHEF_V2, \\\"Only MCV2 can call this function.\\\");\\n        _;\\n    }\\n\\n    /// @dev Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolIds.length;\\n    }\\n\\n    /// @dev Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _pid Pid on MCV2\\n    function add(uint256 allocPoint, uint256 _pid) public onlyOwner {\\n        require(poolInfo[_pid].lastRewardTime == 0, \\\"Pool already exists\\\");\\n        uint256 lastRewardTime = block.timestamp;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n\\n        poolInfo[_pid] = PoolInfo({allocPoint: allocPoint.to64(), lastRewardTime: lastRewardTime.to64(), accPichiPerShare: 0});\\n        poolIds.push(_pid);\\n        emit LogPoolAddition(_pid, allocPoint);\\n    }\\n\\n    /// @dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    function set(uint256 _pid, uint256 _allocPoint) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        emit LogSetPool(_pid, _allocPoint);\\n    }\\n\\n    /// @dev View function to see pending Token\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending PICHI reward for a given user.\\n    function pendingToken(uint256 _pid, address _user) public view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accPichiPerShare = pool.accPichiPerShare;\\n        uint256 lpSupply = MasterChefV2(MASTERCHEF_V2).lpToken(_pid).balanceOf(MASTERCHEF_V2);\\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n            uint256 pichiReward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n            accPichiPerShare = accPichiPerShare.add(pichiReward.mul(ACC_TOKEN_PRECISION) / lpSupply);\\n        }\\n        pending = (user.amount.mul(accPichiPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\\n    }\\n\\n    /// @dev Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @dev Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.timestamp > pool.lastRewardTime) {\\n            uint256 lpSupply = MasterChefV2(MASTERCHEF_V2).lpToken(pid).balanceOf(MASTERCHEF_V2);\\n\\n            if (lpSupply > 0) {\\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n                uint256 pichiReward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accPichiPerShare = pool.accPichiPerShare.add((pichiReward.mul(ACC_TOKEN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardTime = block.timestamp.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accPichiPerShare);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xe85b7a868c822570c136a07c1db1b351b1a9ddb43d1b14cf028784f2429068d2\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 4187,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "poolInfo",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint256,t_struct(PoolInfo)4182_storage)"
              },
              {
                "astId": 4190,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "poolIds",
                "offset": 0,
                "slot": "3",
                "type": "t_array(t_uint256)dyn_storage"
              },
              {
                "astId": 4197,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "userInfo",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)4175_storage))"
              },
              {
                "astId": 4200,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "totalAllocPoint",
                "offset": 0,
                "slot": "5",
                "type": "t_uint256"
              },
              {
                "astId": 4202,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "rewardPerSecond",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)dyn_storage": {
                "base": "t_uint256",
                "encoding": "dynamic_array",
                "label": "uint256[]",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_struct(UserInfo)4175_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct ComplexRewarderTime.UserInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(UserInfo)4175_storage"
              },
              "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)4175_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_struct(UserInfo)4175_storage)"
              },
              "t_mapping(t_uint256,t_struct(PoolInfo)4182_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(PoolInfo)4182_storage"
              },
              "t_struct(PoolInfo)4182_storage": {
                "encoding": "inplace",
                "label": "struct ComplexRewarderTime.PoolInfo",
                "members": [
                  {
                    "astId": 4177,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "accPichiPerShare",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 4179,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "lastRewardTime",
                    "offset": 16,
                    "slot": "0",
                    "type": "t_uint64"
                  },
                  {
                    "astId": 4181,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "allocPoint",
                    "offset": 24,
                    "slot": "0",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(UserInfo)4175_storage": {
                "encoding": "inplace",
                "label": "struct ComplexRewarderTime.UserInfo",
                "members": [
                  {
                    "astId": 4172,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "amount",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 4174,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "rewardDebt",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/mocks/RewarderBrokenMock.sol": {
        "RewarderBrokenMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "onPichiReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "pichiAmount",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ad3b68361461003b578063d63b3c491461007f575b600080fd5b61007d600480360360a081101561005157600080fd5b508035906001600160a01b03602082013581169160408101359091169060608101359060800135610036565b005b6100b16004803603606081101561009557600080fd5b508035906001600160a01b03602082013516906040013561014a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f55781810151838201526020016100dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561013457818101518382015260200161011c565b5050505090500194505050505060405180910390f35b606080600080fdfea2646970667358221220f3037df9e167f594a08f0fa70b977a145968cab0ba9cf90ed72149cccde8cb8064736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x188 DUP1 PUSH2 0x20 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 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAD3B6836 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x36 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x14A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 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 0xF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 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 0x134 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN SUB PUSH30 0xF9E167F594A08F0FA70B977A145968CAB0BA9CF90ED72149CCCDE8CB8064 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "96:432:12:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063ad3b68361461003b578063d63b3c491461007f575b600080fd5b61007d600480360360a081101561005157600080fd5b508035906001600160a01b03602082013581169160408101359091169060608101359060800135610036565b005b6100b16004803603606081101561009557600080fd5b508035906001600160a01b03602082013516906040013561014a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f55781810151838201526020016100dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561013457818101518382015260200161011c565b5050505090500194505050505060405180910390f35b606080600080fdfea2646970667358221220f3037df9e167f594a08f0fa70b977a145968cab0ba9cf90ed72149cccde8cb8064736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAD3B6836 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x36 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x14A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 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 0xF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 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 0x134 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN SUB PUSH30 0xF9E167F594A08F0FA70B977A145968CAB0BA9CF90ED72149CCCDE8CB8064 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "96:432:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;143:157;;;;;;;;;;;;;;;;-1:-1:-1;143:157:12;;;-1:-1:-1;;;;;143:157:12;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;306:220;;;;;;;;;;;;;;;;-1:-1:-1;306:220:12;;;-1:-1:-1;;;;;306:220:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;439:28;469:30;511:8;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "78400",
                "executionCost": "129",
                "totalCost": "78529"
              },
              "external": {
                "onPichiReward(uint256,address,address,uint256,uint256)": "251",
                "pendingTokens(uint256,address,uint256)": "237"
              }
            },
            "methodIdentifiers": {
              "onPichiReward(uint256,address,address,uint256,uint256)": "ad3b6836",
              "pendingTokens(uint256,address,uint256)": "d63b3c49"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onPichiReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pichiAmount\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/RewarderBrokenMock.sol\":\"RewarderBrokenMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"},\"contracts/mocks/RewarderBrokenMock.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"../interfaces/IRewarder.sol\\\";\\n\\ncontract RewarderBrokenMock is IRewarder {\\n    function onPichiReward(\\n        uint256,\\n        address,\\n        address,\\n        uint256,\\n        uint256\\n    ) external override {\\n        revert();\\n    }\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\\n        revert();\\n    }\\n}\\n\",\"keccak256\":\"0x51ca506fafdd64b077c691ce49bb8b64b440ab09c5d24c1dff950c12ae4f9f99\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/mocks/RewarderMock.sol": {
        "RewarderMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_rewardMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_rewardToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_MASTERCHEF_V2",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "pichiAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "onPichiReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "pichiAmount",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60e060405234801561001057600080fd5b506040516106d43803806106d48339818101604052606081101561003357600080fd5b50805160208201516040909201516080919091526001600160601b0319606092831b811660a052911b1660c05260805160a05160601c60c05160601c61062e6100a6600039806101555250806101f452806102a252806102db52806103335250806101c252806103ab525061062e6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ad3b68361461003b578063d63b3c491461007f575b600080fd5b61007d600480360360a081101561005157600080fd5b508035906001600160a01b0360208201358116916040810135909116906060810135906080013561014a565b005b6100b16004803603606081101561009557600080fd5b508035906001600160a01b03602082013516906040013561030b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f55781810151838201526020016100dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561013457818101518382015260200161011c565b5050505090500194505050505060405180910390f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101b15760405162461bcd60e51b81526004018080602001828103825260218152602001806105d86021913960400191505060405180910390fd5b6000670de0b6b3a76400006101e6847f00000000000000000000000000000000000000000000000000000000000000006103fb565b816101ed57fe5b04905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561025f57600080fd5b505afa158015610273573d6000803e3d6000fd5b505050506040513d602081101561028957600080fd5b50519050808211156102ce576102c96001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868361046d565b610302565b6103026001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868461046d565b50505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061035f57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050670de0b6b3a76400006103cf867f00000000000000000000000000000000000000000000000000000000000000006103fb565b816103d657fe5b04816000815181106103e457fe5b602090810291909101015290969095509350505050565b60008115806104165750508082028282828161041357fe5b04145b610467576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106104ea5780518252601f1990920191602091820191016104cb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461054c576040519150601f19603f3d011682016040523d82523d6000602084013e610551565b606091505b509150915081801561057f57508051158061057f575080806020019051602081101561057c57600080fd5b50515b6105d0576040805162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015290519081900360640190fd5b505050505056fe4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2ea264697066735822122071cafe7516bc8ef53d8accda0bccf71c74ea4416bd1673231c5565a4b610375964736f6c634300060c0033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6D4 CODESIZE SUB DUP1 PUSH2 0x6D4 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 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x80 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x62E PUSH2 0xA6 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x155 MSTORE POP DUP1 PUSH2 0x1F4 MSTORE DUP1 PUSH2 0x2A2 MSTORE DUP1 PUSH2 0x2DB MSTORE DUP1 PUSH2 0x333 MSTORE POP DUP1 PUSH2 0x1C2 MSTORE DUP1 PUSH2 0x3AB MSTORE POP PUSH2 0x62E 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 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAD3B6836 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x14A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 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 0xF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 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 0x134 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1B1 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 0x5D8 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1E6 DUP5 PUSH32 0x0 PUSH2 0x3FB JUMP JUMPDEST DUP2 PUSH2 0x1ED JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS 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 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x273 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 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CE JUMPI PUSH2 0x2C9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x46D JUMP JUMPDEST PUSH2 0x302 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP5 PUSH2 0x46D JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x35F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x3CF DUP7 PUSH32 0x0 PUSH2 0x3FB JUMP JUMPDEST DUP2 PUSH2 0x3D6 JUMPI INVALID JUMPDEST DIV DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3E4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x416 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x413 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x467 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 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 0x4EA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4CB 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 0x54C 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 0x551 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x57F JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x57F JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP INVALID 0x4F PUSH15 0x6C79204D4356322063616E2063616C PUSH13 0x20746869732066756E6374696F PUSH15 0x2EA264697066735822122071CAFE75 AND 0xBC DUP15 CREATE2 RETURNDATASIZE DUP11 0xCC 0xDA SIGNEXTEND 0xCC 0xF7 SHR PUSH21 0xEA4416BD1673231C5565A4B610375964736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "247:1689:13:-:0;;;550:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;550:250:13;;;;;;;;;;;681:36;;;;;-1:-1:-1;;;;;;550:250:13;727:26;;;;;;;763:30;;;;;247:1689;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "4846": [
                  {
                    "length": 32,
                    "start": 450
                  },
                  {
                    "length": 32,
                    "start": 939
                  }
                ],
                "4848": [
                  {
                    "length": 32,
                    "start": 500
                  },
                  {
                    "length": 32,
                    "start": 674
                  },
                  {
                    "length": 32,
                    "start": 731
                  },
                  {
                    "length": 32,
                    "start": 819
                  }
                ],
                "4853": [
                  {
                    "length": 32,
                    "start": 341
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063ad3b68361461003b578063d63b3c491461007f575b600080fd5b61007d600480360360a081101561005157600080fd5b508035906001600160a01b0360208201358116916040810135909116906060810135906080013561014a565b005b6100b16004803603606081101561009557600080fd5b508035906001600160a01b03602082013516906040013561030b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f55781810151838201526020016100dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561013457818101518382015260200161011c565b5050505090500194505050505060405180910390f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101b15760405162461bcd60e51b81526004018080602001828103825260218152602001806105d86021913960400191505060405180910390fd5b6000670de0b6b3a76400006101e6847f00000000000000000000000000000000000000000000000000000000000000006103fb565b816101ed57fe5b04905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561025f57600080fd5b505afa158015610273573d6000803e3d6000fd5b505050506040513d602081101561028957600080fd5b50519050808211156102ce576102c96001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868361046d565b610302565b6103026001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868461046d565b50505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061035f57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050670de0b6b3a76400006103cf867f00000000000000000000000000000000000000000000000000000000000000006103fb565b816103d657fe5b04816000815181106103e457fe5b602090810291909101015290969095509350505050565b60008115806104165750508082028282828161041357fe5b04145b610467576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106104ea5780518252601f1990920191602091820191016104cb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461054c576040519150601f19603f3d011682016040523d82523d6000602084013e610551565b606091505b509150915081801561057f57508051158061057f575080806020019051602081101561057c57600080fd5b50515b6105d0576040805162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015290519081900360640190fd5b505050505056fe4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2ea264697066735822122071cafe7516bc8ef53d8accda0bccf71c74ea4416bd1673231c5565a4b610375964736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAD3B6836 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x14A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 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 0xF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 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 0x134 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1B1 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 0x5D8 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1E6 DUP5 PUSH32 0x0 PUSH2 0x3FB JUMP JUMPDEST DUP2 PUSH2 0x1ED JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS 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 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x273 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 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CE JUMPI PUSH2 0x2C9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x46D JUMP JUMPDEST PUSH2 0x302 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP5 PUSH2 0x46D JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x35F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x3CF DUP7 PUSH32 0x0 PUSH2 0x3FB JUMP JUMPDEST DUP2 PUSH2 0x3D6 JUMPI INVALID JUMPDEST DIV DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3E4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x416 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x413 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x467 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 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 0x4EA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4CB 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 0x54C 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 0x551 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x57F JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x57F JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP INVALID 0x4F PUSH15 0x6C79204D4356322063616E2063616C PUSH13 0x20746869732066756E6374696F PUSH15 0x2EA264697066735822122071CAFE75 AND 0xBC DUP15 CREATE2 RETURNDATASIZE DUP11 0xCC 0xDA SIGNEXTEND 0xCC 0xF7 SHR PUSH21 0xEA4416BD1673231C5565A4B610375964736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "247:1689:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;806:502;;;;;;;;;;;;;;;;-1:-1:-1;806:502:13;;;-1:-1:-1;;;;;806:502:13;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1314:495;;;;;;;;;;;;;;;;-1:-1:-1;1314:495:13;;;-1:-1:-1;;;;;1314:495:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;806:502;1851:10;-1:-1:-1;;;;;1865:13:13;1851:27;;1843:73;;;;-1:-1:-1;;;1843:73:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;977:21:::1;494:4;1001:33;:11:::0;1017:16:::1;1001:15;:33::i;:::-;:56;;;;;;977:80;;1067:17;1087:11;-1:-1:-1::0;;;;;1087:21:13::1;;1117:4;1087:36;;;;;;;;;;;;;-1:-1:-1::0;;;;;1087:36:13::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1087:36:13;;-1:-1:-1;1137:25:13;;::::1;1133:169;;;1178:39;-1:-1:-1::0;;;;;1178:11:13::1;:24;1203:2:::0;1207:9;1178:24:::1;:39::i;:::-;1133:169;;;1248:43;-1:-1:-1::0;;;;;1248:11:13::1;:24;1273:2:::0;1277:13;1248:24:::1;:43::i;:::-;1926:1;;806:502:::0;;;;;:::o;1314:495::-;1551:15;;;1564:1;1551:15;;;;;;;;;1447:28;;;;;;1551:15;;;;;;;;;;;-1:-1:-1;1551:15:13;1519:47;;1596:11;1576:13;1590:1;1576:16;;;;;;;;-1:-1:-1;;;;;1576:32:13;;;;:16;;;;;;;;;;;:32;1652:16;;;1666:1;1652:16;;;;;;;;;1618:31;;1652:16;;;;;;;;;;;;-1:-1:-1;;1618:50:13;-1:-1:-1;494:4:13;1698:33;:11;1714:16;1698:15;:33::i;:::-;:56;;;;;;1678:14;1693:1;1678:17;;;;;;;;;;;;;;;;;:76;1772:13;;;;-1:-1:-1;1314:495:13;-1:-1:-1;;;;1314:495:13:o;470:137:4:-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;;-1:-1:-1;;;540:65:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:137;;;;:::o;951:304:3:-;1091:46;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;-1:-1:-1;;;1091:46:3;;;1071:67;;;;1036:12;;1050:17;;1071:19;;;;1091:46;1071:67;;;1091:46;1071:67;;1091:46;1071:67;;;;;;;;;;-1:-1:-1;;1071:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;;;;-1:-1:-1;1189:24:3;1169:44;1149:98;;;;;-1:-1:-1;;;1149:98:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;951:304;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "316400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "onPichiReward(uint256,address,address,uint256,uint256)": "infinite",
                "pendingTokens(uint256,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "onPichiReward(uint256,address,address,uint256,uint256)": "ad3b6836",
              "pendingTokens(uint256,address,uint256)": "d63b3c49"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_MASTERCHEF_V2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pichiAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onPichiReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pichiAmount\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/RewarderMock.sol\":\"RewarderMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n\\n    function onPichiReward(\\n        uint256 pid,\\n        address user,\\n        address recipient,\\n        uint256 pichiAmount,\\n        uint256 newLpAmount\\n    ) external;\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x8bed2e68f570d36ee8ca8ababf7a1424e24e6b74f75a4119c7375ef3b3e7dbef\",\"license\":\"MIT\"},\"contracts/mocks/RewarderMock.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"../interfaces/IRewarder.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\n\\ncontract RewarderMock is IRewarder {\\n    using BoringMath for uint256;\\n    using BoringERC20 for IERC20;\\n    uint256 private immutable rewardMultiplier;\\n    IERC20 private immutable rewardToken;\\n    uint256 private constant REWARD_TOKEN_DIVISOR = 1e18;\\n    address private immutable MASTERCHEF_V2;\\n\\n    constructor(\\n        uint256 _rewardMultiplier,\\n        IERC20 _rewardToken,\\n        address _MASTERCHEF_V2\\n    ) public {\\n        rewardMultiplier = _rewardMultiplier;\\n        rewardToken = _rewardToken;\\n        MASTERCHEF_V2 = _MASTERCHEF_V2;\\n    }\\n\\n    function onPichiReward(\\n        uint256,\\n        address user,\\n        address to,\\n        uint256 pichiAmount,\\n        uint256\\n    ) external override onlyMCV2 {\\n        uint256 pendingReward = pichiAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\\n        uint256 rewardBal = rewardToken.balanceOf(address(this));\\n        if (pendingReward > rewardBal) {\\n            rewardToken.safeTransfer(to, rewardBal);\\n        } else {\\n            rewardToken.safeTransfer(to, pendingReward);\\n        }\\n    }\\n\\n    function pendingTokens(\\n        uint256 pid,\\n        address user,\\n        uint256 pichiAmount\\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\\n        IERC20[] memory _rewardTokens = new IERC20[](1);\\n        _rewardTokens[0] = (rewardToken);\\n        uint256[] memory _rewardAmounts = new uint256[](1);\\n        _rewardAmounts[0] = pichiAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\\n        return (_rewardTokens, _rewardAmounts);\\n    }\\n\\n    modifier onlyMCV2 {\\n        require(msg.sender == MASTERCHEF_V2, \\\"Only MCV2 can call this function.\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0xbf96dd583b9fff346dc2be716117f15c3898b0e1675e358f80ed962b8e47c9c4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:18:9: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n        uint256 pid,\n        ^---------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 349,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 338
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:19:9: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n        address user,\n        ^----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 371,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 359
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:20:9: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n        uint256 pichiAmount\n        ^-----------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 400,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 381
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:21:39: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n                                      ^--------------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 467,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 439
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:21:69: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n    ) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n                                                                    ^----------------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 499,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 469
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderMock.sol:28:9: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n        address user,\n        ^----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 867,
          "file": "contracts/mocks/RewarderMock.sol",
          "start": 855
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderMock.sol:43:9: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n        uint256 pid,\n        ^---------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 1357,
          "file": "contracts/mocks/RewarderMock.sol",
          "start": 1346
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderMock.sol:44:9: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n        address user,\n        ^----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 1379,
          "file": "contracts/mocks/RewarderMock.sol",
          "start": 1367
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
          "exportedSymbols": {
            "BaseBoringBatchable": [
              110
            ],
            "BoringBatchable": [
              145
            ]
          },
          "id": 146,
          "license": "UNLICENSED",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:23:0"
            },
            {
              "id": 2,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "132:33:0"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "./libraries/BoringERC20.sol",
              "id": 3,
              "nodeType": "ImportDirective",
              "scope": 146,
              "sourceUnit": 554,
              "src": "211:37:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 110,
              "linearizedBaseContracts": [
                110
              ],
              "name": "BaseBoringBatchable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 26,
                    "nodeType": "Block",
                    "src": "391:409:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10,
                              "name": "_returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5,
                              "src": "518:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 11,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "518:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3638",
                            "id": 12,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "539:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_68_by_1",
                              "typeString": "int_const 68"
                            },
                            "value": "68"
                          },
                          "src": "518:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16,
                        "nodeType": "IfStatement",
                        "src": "514:67:0",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "5472616e73616374696f6e2072657665727465642073696c656e746c79",
                            "id": 14,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "550:31:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d0b1e7612ebe87924453e5d4581b9067879655587bae8a2dfee438433699b890",
                              "typeString": "literal_string \"Transaction reverted silently\""
                            },
                            "value": "Transaction reverted silently"
                          },
                          "functionReturnParameters": 9,
                          "id": 15,
                          "nodeType": "Return",
                          "src": "543:38:0"
                        }
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "603:98:0",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "653:37:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_returnData",
                                    "nodeType": "YulIdentifier",
                                    "src": "672:11:0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "685:4:0",
                                    "type": "",
                                    "value": "0x04"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "668:3:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "668:22:0"
                              },
                              "variableNames": [
                                {
                                  "name": "_returnData",
                                  "nodeType": "YulIdentifier",
                                  "src": "653:11:0"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 5,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "653:11:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "672:11:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 17,
                        "nodeType": "InlineAssembly",
                        "src": "594:107:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20,
                              "name": "_returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5,
                              "src": "729:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 22,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "743:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 21,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "743:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 23,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "742:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "718:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "718:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 24,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "718:33:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 9,
                        "id": 25,
                        "nodeType": "Return",
                        "src": "711:40:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 27,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getRevertMsg",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5,
                        "mutability": "mutable",
                        "name": "_returnData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 27,
                        "src": "327:24:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "327:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "326:26:0"
                  },
                  "returnParameters": {
                    "id": 9,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 27,
                        "src": "376:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 7,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:15:0"
                  },
                  "scope": 110,
                  "src": "304:496:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 108,
                    "nodeType": "Block",
                    "src": "1392:422:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 48,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41,
                            "name": "successes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36,
                            "src": "1428:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 45,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30,
                                  "src": "1451:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                "id": 46,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1451:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 44,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1440:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bool[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 42,
                                  "name": "bool",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1444:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 43,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "1444:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                  "typeString": "bool[]"
                                }
                              }
                            },
                            "id": 47,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1440:24:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "src": "1428:36:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "id": 49,
                        "nodeType": "ExpressionStatement",
                        "src": "1428:36:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 57,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 50,
                            "name": "results",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39,
                            "src": "1475:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 54,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30,
                                  "src": "1497:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                "id": 55,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1497:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 53,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1485:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 51,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1489:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                },
                                "id": 52,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "1489:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                  "typeString": "bytes[]"
                                }
                              }
                            },
                            "id": 56,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1485:25:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "src": "1475:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "id": 58,
                        "nodeType": "ExpressionStatement",
                        "src": "1475:35:0"
                      },
                      {
                        "body": {
                          "id": 106,
                          "nodeType": "Block",
                          "src": "1564:243:0",
                          "statements": [
                            {
                              "assignments": [
                                71,
                                73
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 71,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 106,
                                  "src": "1580:12:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 70,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1580:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 73,
                                  "mutability": "mutable",
                                  "name": "result",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 106,
                                  "src": "1594:19:0",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 72,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1594:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 83,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 79,
                                      "name": "calls",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30,
                                      "src": "1644:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "bytes calldata[] calldata"
                                      }
                                    },
                                    "id": 81,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 80,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 60,
                                      "src": "1650:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1644:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 76,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "1625:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_BaseBoringBatchable_$110",
                                          "typeString": "contract BaseBoringBatchable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_BaseBoringBatchable_$110",
                                          "typeString": "contract BaseBoringBatchable"
                                        }
                                      ],
                                      "id": 75,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1617:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 74,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1617:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 77,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1617:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 78,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "delegatecall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1617:26:0",
                                  "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": 82,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1617:36:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1579:74:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 88,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 85,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 71,
                                      "src": "1676:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 87,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "1687:13:0",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 86,
                                        "name": "revertOnFail",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32,
                                        "src": "1688:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1676:24:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 90,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 73,
                                        "src": "1716:6:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 89,
                                      "name": "_getRevertMsg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27,
                                      "src": "1702:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$",
                                        "typeString": "function (bytes memory) pure returns (string memory)"
                                      }
                                    },
                                    "id": 91,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1702:21:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 84,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1668:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 92,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1668:56:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 93,
                              "nodeType": "ExpressionStatement",
                              "src": "1668:56:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 98,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 94,
                                    "name": "successes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36,
                                    "src": "1739:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 96,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 95,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 60,
                                    "src": "1749:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1739:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 97,
                                  "name": "success",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 71,
                                  "src": "1754:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1739:22:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 99,
                              "nodeType": "ExpressionStatement",
                              "src": "1739:22:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 100,
                                    "name": "results",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39,
                                    "src": "1776:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 102,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 101,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 60,
                                    "src": "1784:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1776:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 103,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 73,
                                  "src": "1789:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "1776:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 105,
                              "nodeType": "ExpressionStatement",
                              "src": "1776:19:0"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 66,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 63,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 60,
                            "src": "1541:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 64,
                              "name": "calls",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30,
                              "src": "1545:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            },
                            "id": 65,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1545:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1541:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 107,
                        "initializationExpression": {
                          "assignments": [
                            60
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 60,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 107,
                              "src": "1526:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 59,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1526:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 62,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 61,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1538:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1526:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 68,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1559:3:0",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 67,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 60,
                              "src": "1559:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 69,
                          "nodeType": "ExpressionStatement",
                          "src": "1559:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "1521:286:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d2423b51",
                  "id": 109,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batch",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 33,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30,
                        "mutability": "mutable",
                        "name": "calls",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 109,
                        "src": "1275:22:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 28,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1275:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 29,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1275:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32,
                        "mutability": "mutable",
                        "name": "revertOnFail",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 109,
                        "src": "1299:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1299:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1274:43:0"
                  },
                  "returnParameters": {
                    "id": 40,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36,
                        "mutability": "mutable",
                        "name": "successes",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 109,
                        "src": "1343:23:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 34,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1343:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 35,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1343:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39,
                        "mutability": "mutable",
                        "name": "results",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 109,
                        "src": "1368:22:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 37,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1368:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 38,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1368:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1342:49:0"
                  },
                  "scope": 110,
                  "src": "1260:554:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 146,
              "src": "268:1549:0"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 111,
                    "name": "BaseBoringBatchable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 110,
                    "src": "1865:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseBoringBatchable_$110",
                      "typeString": "contract BaseBoringBatchable"
                    }
                  },
                  "id": 112,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1865:19:0"
                }
              ],
              "contractDependencies": [
                110
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 145,
              "linearizedBaseContracts": [
                145,
                110
              ],
              "name": "BoringBatchable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 143,
                    "nodeType": "Block",
                    "src": "2294:113:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 134,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 116,
                              "src": "2363:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 135,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 118,
                              "src": "2369:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 136,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 120,
                              "src": "2373:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 137,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 122,
                              "src": "2381:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 138,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 124,
                              "src": "2391:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 139,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 126,
                              "src": "2394:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 140,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 128,
                              "src": "2397:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "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,
                              "id": 131,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 114,
                              "src": "2350:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "permit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 336,
                            "src": "2350:12:0",
                            "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": 141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2350:49:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 142,
                        "nodeType": "ExpressionStatement",
                        "src": "2350:49:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "7c516e94",
                  "id": 144,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permitToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 114,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2182:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 113,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "2182:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 116,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2196:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2196:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 118,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2210:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2210:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 120,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2222:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2222:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 122,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2238:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2238:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 124,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2256:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 123,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2256:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 126,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2265:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 125,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2265:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 128,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2276:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 127,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2276:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2181:105:0"
                  },
                  "returnParameters": {
                    "id": 130,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2294:0:0"
                  },
                  "scope": 145,
                  "src": "2161:246:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 146,
              "src": "1837:573:0"
            }
          ],
          "src": "107:2303:0"
        },
        "id": 0
      },
      "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
          "exportedSymbols": {
            "BoringOwnable": [
              271
            ],
            "BoringOwnableData": [
              152
            ]
          },
          "id": 272,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 147,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "100:23:1"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 152,
              "linearizedBaseContracts": [
                152
              ],
              "name": "BoringOwnableData",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "8da5cb5b",
                  "id": 149,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 152,
                  "src": "350:20:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 148,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "350:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e30c3978",
                  "id": 151,
                  "mutability": "mutable",
                  "name": "pendingOwner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 152,
                  "src": "397:27:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "397:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                }
              ],
              "scope": 272,
              "src": "296:132:1"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 153,
                    "name": "BoringOwnableData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 152,
                    "src": "474:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnableData_$152",
                      "typeString": "contract BoringOwnableData"
                    }
                  },
                  "id": 154,
                  "nodeType": "InheritanceSpecifier",
                  "src": "474:17:1"
                }
              ],
              "contractDependencies": [
                152
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 271,
              "linearizedBaseContracts": [
                271,
                152
              ],
              "name": "BoringOwnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 160,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 156,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 160,
                        "src": "541:29:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 155,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "541:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 158,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 160,
                        "src": "572:24:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 157,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "540:57:1"
                  },
                  "src": "514:84:1"
                },
                {
                  "body": {
                    "id": 177,
                    "nodeType": "Block",
                    "src": "628:97:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 163,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 149,
                            "src": "639:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 164,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "647:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "647:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "639:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 167,
                        "nodeType": "ExpressionStatement",
                        "src": "639:18:1"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 171,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "702:1:1",
                                  "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": 170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "694:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 169,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "694:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "694:10:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 173,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "706:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "706:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 168,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 160,
                            "src": "673:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "673:44:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 176,
                        "nodeType": "EmitStatement",
                        "src": "668:49:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 178,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 161,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "618:2:1"
                  },
                  "returnParameters": {
                    "id": 162,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "628:0:1"
                  },
                  "scope": 271,
                  "src": "606:119:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 225,
                    "nodeType": "Block",
                    "src": "864:382:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 189,
                          "name": "direct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 182,
                          "src": "879:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 223,
                          "nodeType": "Block",
                          "src": "1165:74:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 219,
                                  "name": "pendingOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 151,
                                  "src": "1204:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 220,
                                  "name": "newOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 180,
                                  "src": "1219:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1204:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 222,
                              "nodeType": "ExpressionStatement",
                              "src": "1204:23:1"
                            }
                          ]
                        },
                        "id": 224,
                        "nodeType": "IfStatement",
                        "src": "875:364:1",
                        "trueBody": {
                          "id": 218,
                          "nodeType": "Block",
                          "src": "887:272:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 196,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 191,
                                        "name": "newOwner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 180,
                                        "src": "933:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 194,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "953:1:1",
                                            "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": 193,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "945:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 192,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "945:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 195,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "945:10:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "src": "933:22:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 197,
                                      "name": "renounce",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 184,
                                      "src": "959:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "933:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "4f776e61626c653a207a65726f2061646472657373",
                                    "id": 199,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "969:23:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4bea69941b0d0257b3e89326ac37d51764d80d2e6e1a44e2d90b6a6f85f1b830",
                                      "typeString": "literal_string \"Ownable: zero address\""
                                    },
                                    "value": "Ownable: zero address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4bea69941b0d0257b3e89326ac37d51764d80d2e6e1a44e2d90b6a6f85f1b830",
                                      "typeString": "literal_string \"Ownable: zero address\""
                                    }
                                  ],
                                  "id": 190,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "925:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "925:68:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 201,
                              "nodeType": "ExpressionStatement",
                              "src": "925:68:1"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 203,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 149,
                                    "src": "1060:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 204,
                                    "name": "newOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 180,
                                    "src": "1067:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 202,
                                  "name": "OwnershipTransferred",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 160,
                                  "src": "1039:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1039:37:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 206,
                              "nodeType": "EmitStatement",
                              "src": "1034:42:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 207,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 149,
                                  "src": "1091:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 208,
                                  "name": "newOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 180,
                                  "src": "1099:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1091:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 210,
                              "nodeType": "ExpressionStatement",
                              "src": "1091:16:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 211,
                                  "name": "pendingOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 151,
                                  "src": "1122:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 214,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1145:1:1",
                                      "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": 213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1137:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 212,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1137:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 215,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1137:10:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "1122:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 217,
                              "nodeType": "ExpressionStatement",
                              "src": "1122:25:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "078dfbe7",
                  "id": 226,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 187,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 186,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "854:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "854:9:1"
                    }
                  ],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 180,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 226,
                        "src": "801:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 179,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 182,
                        "mutability": "mutable",
                        "name": "direct",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 226,
                        "src": "819:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 181,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "819:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 184,
                        "mutability": "mutable",
                        "name": "renounce",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 226,
                        "src": "832:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 183,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "832:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "800:46:1"
                  },
                  "returnParameters": {
                    "id": 188,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "864:0:1"
                  },
                  "scope": 271,
                  "src": "774:472:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 257,
                    "nodeType": "Block",
                    "src": "1328:315:1",
                    "statements": [
                      {
                        "assignments": [
                          230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 230,
                            "mutability": "mutable",
                            "name": "_pendingOwner",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 257,
                            "src": "1339:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 229,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1339:7:1",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 232,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 231,
                          "name": "pendingOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 151,
                          "src": "1363:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1339:36:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 234,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1423:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1423:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 236,
                                "name": "_pendingOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 230,
                                "src": "1437:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1423:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572",
                              "id": 238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1452:34:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a7ec3208bb4c778bbdbdd3fdfe92b1d315d85dd01a9131ea9f648f906ac7a6b8",
                                "typeString": "literal_string \"Ownable: caller != pending owner\""
                              },
                              "value": "Ownable: caller != pending owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a7ec3208bb4c778bbdbdd3fdfe92b1d315d85dd01a9131ea9f648f906ac7a6b8",
                                "typeString": "literal_string \"Ownable: caller != pending owner\""
                              }
                            ],
                            "id": 233,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1415:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1415:72:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 240,
                        "nodeType": "ExpressionStatement",
                        "src": "1415:72:1"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 242,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 149,
                              "src": "1546:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 243,
                              "name": "_pendingOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 230,
                              "src": "1553:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 241,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 160,
                            "src": "1525:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1525:42:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 245,
                        "nodeType": "EmitStatement",
                        "src": "1520:47:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 246,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 149,
                            "src": "1578:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 247,
                            "name": "_pendingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 230,
                            "src": "1586:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1578:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 249,
                        "nodeType": "ExpressionStatement",
                        "src": "1578:21:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 250,
                            "name": "pendingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 151,
                            "src": "1610:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1633:1:1",
                                "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": 252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1625:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 251,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1625:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1625:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1610:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 256,
                        "nodeType": "ExpressionStatement",
                        "src": "1610:25:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "4e71e0c8",
                  "id": 258,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 227,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1318:2:1"
                  },
                  "returnParameters": {
                    "id": 228,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1328:0:1"
                  },
                  "scope": 271,
                  "src": "1295:348:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 269,
                    "nodeType": "Block",
                    "src": "1713:95:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 261,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1732:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1732:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 263,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 149,
                                "src": "1746:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1732:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1753:34:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 260,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1724:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1724:64:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 267,
                        "nodeType": "ExpressionStatement",
                        "src": "1724:64:1"
                      },
                      {
                        "id": 268,
                        "nodeType": "PlaceholderStatement",
                        "src": "1799:1:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 270,
                  "name": "onlyOwner",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1710:2:1"
                  },
                  "src": "1692:116:1",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 272,
              "src": "448:1363:1"
            }
          ],
          "src": "100:1711:1"
        },
        "id": 1
      },
      "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              337
            ]
          },
          "id": 338,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 273,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 337,
              "linearizedBaseContracts": [
                337
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "18160ddd",
                  "id": 278,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 274,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "104:2:2"
                  },
                  "returnParameters": {
                    "id": 277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 276,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 278,
                        "src": "130:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 275,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "130:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "129:9:2"
                  },
                  "scope": 337,
                  "src": "84:55:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "70a08231",
                  "id": 285,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 281,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 280,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 285,
                        "src": "164:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 279,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "164:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:17:2"
                  },
                  "returnParameters": {
                    "id": 284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 283,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 285,
                        "src": "204:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "204:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "203:9:2"
                  },
                  "scope": 337,
                  "src": "145:68:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "dd62ed3e",
                  "id": 294,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 290,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 287,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 294,
                        "src": "238:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 286,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 289,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 294,
                        "src": "253:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 288,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "253:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "237:32:2"
                  },
                  "returnParameters": {
                    "id": 293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 292,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 294,
                        "src": "293:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "293:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "292:9:2"
                  },
                  "scope": 337,
                  "src": "219:83:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 303,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 296,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 303,
                        "src": "325:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "325:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 298,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 303,
                        "src": "342:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "324:33:2"
                  },
                  "returnParameters": {
                    "id": 302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 301,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 303,
                        "src": "376:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 300,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:6:2"
                  },
                  "scope": 337,
                  "src": "308:74:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 311,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 305,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 311,
                        "src": "403:20:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 304,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "403:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 307,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 311,
                        "src": "425:18:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 306,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "425:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 309,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 311,
                        "src": "445:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 308,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "445:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "402:57:2"
                  },
                  "src": "388:72:2"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 319,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 313,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 319,
                        "src": "481:21:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 312,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "481:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 315,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 319,
                        "src": "504:23:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 314,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "504:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 317,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 319,
                        "src": "529:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "529:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "480:63:2"
                  },
                  "src": "466:78:2"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d505accf",
                  "id": 336,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 334,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 321,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "585:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 320,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "585:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 323,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "600:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 322,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "600:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 325,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "617:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 327,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "632:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "632:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 329,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "650:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 328,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "650:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 331,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "659:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 330,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 333,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "670:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 332,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "584:96:2"
                  },
                  "returnParameters": {
                    "id": 335,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "689:0:2"
                  },
                  "scope": 337,
                  "src": "569:121:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 338,
              "src": "60:633:2"
            }
          ],
          "src": "33:660:2"
        },
        "id": 2
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
          "exportedSymbols": {
            "BoringERC20": [
              553
            ]
          },
          "id": 554,
          "license": "UNLICENSED",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 339,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:23:3"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 340,
              "nodeType": "ImportDirective",
              "scope": 554,
              "sourceUnit": 338,
              "src": "67:34:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 553,
              "linearizedBaseContracts": [
                553
              ],
              "name": "BoringERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 378,
                    "nodeType": "Block",
                    "src": "203:197:3",
                    "statements": [
                      {
                        "assignments": [
                          348,
                          350
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 348,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 378,
                            "src": "215:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 347,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "215:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 350,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 378,
                            "src": "229:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 349,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "229:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 361,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783935643839623431",
                                  "id": 358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "299:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2514000705_by_1",
                                    "typeString": "int_const 2514000705"
                                  },
                                  "value": "0x95d89b41"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2514000705_by_1",
                                    "typeString": "int_const 2514000705"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 356,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "276:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "276:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "276:34:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 353,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 342,
                                  "src": "258:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "250:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 351,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "250:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "250:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "250:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "250:61:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "214:97:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 362,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 348,
                              "src": "329:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 363,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 350,
                                  "src": "340:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "340:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "354:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "340:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "329:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3f3f3f",
                            "id": 375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "387:5:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ad68b4dd5516c9b8c2050c111c09e315e44fd13499c6724a87c1b4642b615187",
                              "typeString": "literal_string \"???\""
                            },
                            "value": "???"
                          },
                          "id": 376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "329:63:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 370,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 350,
                                "src": "369:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "376:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 371,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "376:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 373,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "375:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 368,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "358:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "358:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "358:26:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 346,
                        "id": 377,
                        "nodeType": "Return",
                        "src": "322:70:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeSymbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 343,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 342,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 379,
                        "src": "152:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 341,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "152:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "151:14:3"
                  },
                  "returnParameters": {
                    "id": 346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 345,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 379,
                        "src": "188:13:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 344,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "188:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "187:15:3"
                  },
                  "scope": 553,
                  "src": "132:268:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 417,
                    "nodeType": "Block",
                    "src": "477:197:3",
                    "statements": [
                      {
                        "assignments": [
                          387,
                          389
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 387,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 417,
                            "src": "489:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 386,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "489:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 389,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 417,
                            "src": "503:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 388,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "503:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 400,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783036666464653033",
                                  "id": 397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "573:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_117300739_by_1",
                                    "typeString": "int_const 117300739"
                                  },
                                  "value": "0x06fdde03"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_117300739_by_1",
                                    "typeString": "int_const 117300739"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 395,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "550:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "550:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "550:34:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 392,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 381,
                                  "src": "532:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "524:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 390,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "524:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "524:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "524:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "524:61:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "488:97:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 401,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 387,
                              "src": "603:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 402,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 389,
                                  "src": "614:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "614:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "628:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "614:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "603:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3f3f3f",
                            "id": 414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "661:5:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ad68b4dd5516c9b8c2050c111c09e315e44fd13499c6724a87c1b4642b615187",
                              "typeString": "literal_string \"???\""
                            },
                            "value": "???"
                          },
                          "id": 415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "603:63:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 409,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 389,
                                "src": "643:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "650:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 410,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "650:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 412,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "649:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 407,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "632:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "632:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "632:26:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 385,
                        "id": 416,
                        "nodeType": "Return",
                        "src": "596:70:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 418,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeName",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 381,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 418,
                        "src": "426:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 380,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "426:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:14:3"
                  },
                  "returnParameters": {
                    "id": 385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 384,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 418,
                        "src": "462:13:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 383,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "462:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "461:15:3"
                  },
                  "scope": 553,
                  "src": "408:266:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 456,
                    "nodeType": "Block",
                    "src": "748:195:3",
                    "statements": [
                      {
                        "assignments": [
                          426,
                          428
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 426,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 456,
                            "src": "760:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 425,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "760:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 428,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 456,
                            "src": "774:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 427,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "774:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 439,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783331336365353637",
                                  "id": 436,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "844:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  },
                                  "value": "0x313ce567"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 434,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "821:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "821:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "821:34:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 431,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 420,
                                  "src": "803:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "795:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 429,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "795:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "795:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "795:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "795:61:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "759:97:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 440,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 426,
                              "src": "874:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 441,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 428,
                                  "src": "885:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "885:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "900:2:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "885:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "874:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3138",
                            "id": 453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "933:2:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_18_by_1",
                              "typeString": "int_const 18"
                            },
                            "value": "18"
                          },
                          "id": 454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "874:61:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 448,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 428,
                                "src": "916:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "923:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 449,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "923:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 451,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "922:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 446,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "905:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "905:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "905:25:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 424,
                        "id": 455,
                        "nodeType": "Return",
                        "src": "867:68:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 457,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDecimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 420,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 457,
                        "src": "704:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 419,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "704:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "703:14:3"
                  },
                  "returnParameters": {
                    "id": 424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 423,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 457,
                        "src": "741:5:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 422,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "741:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "740:7:3"
                  },
                  "scope": 553,
                  "src": "682:261:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 502,
                    "nodeType": "Block",
                    "src": "1024:231:3",
                    "statements": [
                      {
                        "assignments": [
                          467,
                          469
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 467,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 502,
                            "src": "1036:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 466,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1036:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 469,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 502,
                            "src": "1050:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 468,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1050:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 482,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30786139303539636262",
                                  "id": 477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1114:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  "value": "0xa9059cbb"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 478,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 461,
                                  "src": "1126:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 479,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 463,
                                  "src": "1130:6:3",
                                  "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": 475,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1091:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1091:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1091:46:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 472,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 459,
                                  "src": "1079:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1071:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 470,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1071:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1071:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1071:19:3",
                            "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": 481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1071:67:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1035:103:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 484,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 467,
                                "src": "1157:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 488,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 485,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 469,
                                          "src": "1169:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 486,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1169:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 487,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1184:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1169:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 491,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 469,
                                          "src": "1200:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 493,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1207:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 492,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1207:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 494,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1206:6:3",
                                          "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": 489,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1189:3:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 490,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1189:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 495,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1189:24:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1169:44:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 497,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1168:46:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1157:57:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e6745524332303a205472616e73666572206661696c6564",
                              "id": 499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1216:30:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27",
                                "typeString": "literal_string \"BoringERC20: Transfer failed\""
                              },
                              "value": "BoringERC20: Transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27",
                                "typeString": "literal_string \"BoringERC20: Transfer failed\""
                              }
                            ],
                            "id": 483,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1149:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1149:98:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 501,
                        "nodeType": "ExpressionStatement",
                        "src": "1149:98:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 459,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 503,
                        "src": "973:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 458,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "973:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 461,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 503,
                        "src": "987:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 460,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 463,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 503,
                        "src": "999:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 462,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "999:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "972:42:3"
                  },
                  "returnParameters": {
                    "id": 465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1024:0:3"
                  },
                  "scope": 553,
                  "src": "951:304:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 551,
                    "nodeType": "Block",
                    "src": "1354:241:3",
                    "statements": [
                      {
                        "assignments": [
                          515,
                          517
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 515,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 551,
                            "src": "1366:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 514,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1366:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 517,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 551,
                            "src": "1380:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 516,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1380:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 531,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783233623837326464",
                                  "id": 525,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1444:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  "value": "0x23b872dd"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 526,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 507,
                                  "src": "1456:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 527,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 509,
                                  "src": "1462:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 528,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 511,
                                  "src": "1466:6:3",
                                  "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": 523,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1421:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1421:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1421:52:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 520,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 505,
                                  "src": "1409:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1401:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 518,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1401:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1401:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1401:19:3",
                            "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": 530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1401:73:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1365:109:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 533,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 515,
                                "src": "1493:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 545,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 534,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 517,
                                          "src": "1505:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 535,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1505:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 536,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1520:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1505:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 540,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 517,
                                          "src": "1536:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 542,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1543:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 541,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1543:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 543,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1542:6:3",
                                          "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": 538,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1525:3:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 539,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1525:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1525:24:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1505:44:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 546,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1504:46:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1493:57:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e6745524332303a205472616e7366657246726f6d206661696c6564",
                              "id": 548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1552:34:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dffd2f381f9235cb5927387124071d63a91c90f587c3edae76629d7dc4794f26",
                                "typeString": "literal_string \"BoringERC20: TransferFrom failed\""
                              },
                              "value": "BoringERC20: TransferFrom failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dffd2f381f9235cb5927387124071d63a91c90f587c3edae76629d7dc4794f26",
                                "typeString": "literal_string \"BoringERC20: TransferFrom failed\""
                              }
                            ],
                            "id": 532,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1485:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1485:102:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 550,
                        "nodeType": "ExpressionStatement",
                        "src": "1485:102:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 552,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 512,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 505,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 552,
                        "src": "1289:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 504,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "1289:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 507,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 552,
                        "src": "1303:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 506,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1303:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 509,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 552,
                        "src": "1317:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 508,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1317:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 511,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 552,
                        "src": "1329:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 510,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1329:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1288:56:3"
                  },
                  "returnParameters": {
                    "id": 513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1354:0:3"
                  },
                  "scope": 553,
                  "src": "1263:332:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 554,
              "src": "105:1493:3"
            }
          ],
          "src": "40:1558:3"
        },
        "id": 3
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
          "exportedSymbols": {
            "BoringMath": [
              706
            ],
            "BoringMath128": [
              751
            ],
            "BoringMath32": [
              841
            ],
            "BoringMath64": [
              796
            ]
          },
          "id": 842,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 555,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 706,
              "linearizedBaseContracts": [
                706
              ],
              "name": "BoringMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 576,
                    "nodeType": "Block",
                    "src": "280:56:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 569,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 565,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 562,
                                      "src": "290:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 568,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 566,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 557,
                                        "src": "294:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 567,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 559,
                                        "src": "298:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "294:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "290:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 570,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "289:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 571,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 559,
                                "src": "304:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "289:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "307:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 564,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "281:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "281:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 575,
                        "nodeType": "ExpressionStatement",
                        "src": "281:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 577,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 560,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 557,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 577,
                        "src": "224:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 556,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "224:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 559,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 577,
                        "src": "235:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 558,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "235:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "223:22:4"
                  },
                  "returnParameters": {
                    "id": 563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 562,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 577,
                        "src": "269:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 561,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "269:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "268:11:4"
                  },
                  "scope": 706,
                  "src": "211:125:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 598,
                    "nodeType": "Block",
                    "src": "411:53:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 587,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 584,
                                      "src": "421:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 590,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 588,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 579,
                                        "src": "425:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 589,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 581,
                                        "src": "429:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "425:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "421:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 592,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "420:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 593,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 579,
                                "src": "435:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "420:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "438:23:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 586,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "412:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "412:50:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 597,
                        "nodeType": "ExpressionStatement",
                        "src": "412:50:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 599,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 579,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 599,
                        "src": "355:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 578,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "355:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 581,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 599,
                        "src": "366:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 580,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "366:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "354:22:4"
                  },
                  "returnParameters": {
                    "id": 585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 584,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 599,
                        "src": "400:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 583,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "400:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "399:11:4"
                  },
                  "scope": 706,
                  "src": "342:122:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 626,
                    "nodeType": "Block",
                    "src": "539:68:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 609,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 603,
                                  "src": "548:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "553:1:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "548:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 619,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 616,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 612,
                                          "name": "c",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 606,
                                          "src": "559:1:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 615,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 613,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 601,
                                            "src": "563:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 614,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 603,
                                            "src": "567:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "563:5:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "559:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 617,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "558:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 618,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 603,
                                    "src": "570:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "558:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 620,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 601,
                                  "src": "575:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "558:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "548:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a204d756c204f766572666c6f77",
                              "id": 623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "578:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_efa2024ddfa13946089ac6325359d421926f574cb871587fa659a82734fa675e",
                                "typeString": "literal_string \"BoringMath: Mul Overflow\""
                              },
                              "value": "BoringMath: Mul Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_efa2024ddfa13946089ac6325359d421926f574cb871587fa659a82734fa675e",
                                "typeString": "literal_string \"BoringMath: Mul Overflow\""
                              }
                            ],
                            "id": 608,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "540:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "540:65:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 625,
                        "nodeType": "ExpressionStatement",
                        "src": "540:65:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 627,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 601,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 627,
                        "src": "483:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 600,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "483:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 603,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 627,
                        "src": "494:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 602,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "494:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "482:22:4"
                  },
                  "returnParameters": {
                    "id": 607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 606,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 627,
                        "src": "528:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "528:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "527:11:4"
                  },
                  "scope": 706,
                  "src": "470:137:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 652,
                    "nodeType": "Block",
                    "src": "673:101:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 635,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 629,
                                "src": "692:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 639,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "705:2:4",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 638,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "706: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": 637,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "697:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 636,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "697:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "697:11:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "692:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e74313238204f766572666c6f77",
                              "id": 642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "710:30:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_64196137e15a5be4f7488ecfa918cfa26a6c2051ae3fb739c5de9bf8431fe9a5",
                                "typeString": "literal_string \"BoringMath: uint128 Overflow\""
                              },
                              "value": "BoringMath: uint128 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_64196137e15a5be4f7488ecfa918cfa26a6c2051ae3fb739c5de9bf8431fe9a5",
                                "typeString": "literal_string \"BoringMath: uint128 Overflow\""
                              }
                            ],
                            "id": 634,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "684:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "684:57:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 644,
                        "nodeType": "ExpressionStatement",
                        "src": "684:57:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 645,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "752:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 648,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 629,
                                "src": "764:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "756:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 646,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "756:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "756:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "752:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 651,
                        "nodeType": "ExpressionStatement",
                        "src": "752:14:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to128",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 629,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 653,
                        "src": "628:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "628:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "627:11:4"
                  },
                  "returnParameters": {
                    "id": 633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 632,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 653,
                        "src": "662:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 631,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "662:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "661:11:4"
                  },
                  "scope": 706,
                  "src": "613:161:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 678,
                    "nodeType": "Block",
                    "src": "838:98:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 661,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 655,
                                "src": "857:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 665,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "869:2:4",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 664,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "870: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": 663,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "862:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  },
                                  "typeName": {
                                    "id": 662,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "862:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "862:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "857:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e743634204f766572666c6f77",
                              "id": 668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "874:29:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b3c33265b589f76cafa7df00c0a28addc9a2c2003a13a1e0e4b875f58eb08764",
                                "typeString": "literal_string \"BoringMath: uint64 Overflow\""
                              },
                              "value": "BoringMath: uint64 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b3c33265b589f76cafa7df00c0a28addc9a2c2003a13a1e0e4b875f58eb08764",
                                "typeString": "literal_string \"BoringMath: uint64 Overflow\""
                              }
                            ],
                            "id": 660,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "849:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "849:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 670,
                        "nodeType": "ExpressionStatement",
                        "src": "849:55:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 671,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 658,
                            "src": "915:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 674,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 655,
                                "src": "926:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "919:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 672,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "919:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "919:9:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "915:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 677,
                        "nodeType": "ExpressionStatement",
                        "src": "915:13:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 679,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to64",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 655,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 679,
                        "src": "794:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 654,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "794:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "793:11:4"
                  },
                  "returnParameters": {
                    "id": 659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 658,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 679,
                        "src": "828:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 657,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "828:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "827:10:4"
                  },
                  "scope": 706,
                  "src": "780:156:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 704,
                    "nodeType": "Block",
                    "src": "1000:98:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 687,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 681,
                                "src": "1019:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 691,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "1031:2:4",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 690,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1032: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": 689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1024:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 688,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1024:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1024:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1019:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e743332204f766572666c6f77",
                              "id": 694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1036:29:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d8918cd18a3e78dc3bd01c63d310640381efda31e2d3ce751014519bc65013fc",
                                "typeString": "literal_string \"BoringMath: uint32 Overflow\""
                              },
                              "value": "BoringMath: uint32 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d8918cd18a3e78dc3bd01c63d310640381efda31e2d3ce751014519bc65013fc",
                                "typeString": "literal_string \"BoringMath: uint32 Overflow\""
                              }
                            ],
                            "id": 686,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1011:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1011:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 696,
                        "nodeType": "ExpressionStatement",
                        "src": "1011:55:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 697,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 684,
                            "src": "1077:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 700,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 681,
                                "src": "1088:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1081:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              },
                              "typeName": {
                                "id": 698,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1081:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1081:9:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "1077:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 703,
                        "nodeType": "ExpressionStatement",
                        "src": "1077:13:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 705,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to32",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 681,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 705,
                        "src": "956:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "956:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "955:11:4"
                  },
                  "returnParameters": {
                    "id": 685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 684,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 705,
                        "src": "990:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 683,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "990:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "989:10:4"
                  },
                  "scope": 706,
                  "src": "942:156:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 842,
              "src": "185:916:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 751,
              "linearizedBaseContracts": [
                751
              ],
              "name": "BoringMath128",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 727,
                    "nodeType": "Block",
                    "src": "1203:56:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 716,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 713,
                                      "src": "1213:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 719,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 717,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 708,
                                        "src": "1217:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 718,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 710,
                                        "src": "1221:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1217:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "1213:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "id": 721,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1212:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 722,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 710,
                                "src": "1227:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "1212:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1230:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 715,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1204:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1204:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 726,
                        "nodeType": "ExpressionStatement",
                        "src": "1204:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 711,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 708,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 728,
                        "src": "1147:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 707,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1147:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 710,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 728,
                        "src": "1158:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 709,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1158:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1146:22:4"
                  },
                  "returnParameters": {
                    "id": 714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 713,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 728,
                        "src": "1192:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 712,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1192:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1191:11:4"
                  },
                  "scope": 751,
                  "src": "1134:125:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 749,
                    "nodeType": "Block",
                    "src": "1334:53:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 742,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 738,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 735,
                                      "src": "1344:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 739,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 730,
                                        "src": "1348:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 740,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 732,
                                        "src": "1352:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1348:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "1344:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "id": 743,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1343:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 744,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 730,
                                "src": "1358:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "1343:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1361:23:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 737,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1335:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1335:50:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 748,
                        "nodeType": "ExpressionStatement",
                        "src": "1335:50:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 750,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 730,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 750,
                        "src": "1278:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 729,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1278:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 732,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 750,
                        "src": "1289:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 731,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1289:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1277:22:4"
                  },
                  "returnParameters": {
                    "id": 736,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 735,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 750,
                        "src": "1323:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 734,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1323:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1322:11:4"
                  },
                  "scope": 751,
                  "src": "1265:122:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 842,
              "src": "1105:285:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 796,
              "linearizedBaseContracts": [
                796
              ],
              "name": "BoringMath64",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 772,
                    "nodeType": "Block",
                    "src": "1488:56:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 765,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 761,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 758,
                                      "src": "1498:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      "id": 764,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 762,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 753,
                                        "src": "1502:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 763,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 755,
                                        "src": "1506:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "1502:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "src": "1498:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "id": 766,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1497:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 767,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "1512:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "1497:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1515:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 760,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1489:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1489:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 771,
                        "nodeType": "ExpressionStatement",
                        "src": "1489:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 773,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 753,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 773,
                        "src": "1435:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 752,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 755,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 773,
                        "src": "1445:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 754,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1445:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1434:20:4"
                  },
                  "returnParameters": {
                    "id": 759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 758,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 773,
                        "src": "1478:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 757,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1477:10:4"
                  },
                  "scope": 796,
                  "src": "1422:122:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 794,
                    "nodeType": "Block",
                    "src": "1616:53:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 783,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 780,
                                      "src": "1626:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      "id": 786,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 784,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 775,
                                        "src": "1630:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 785,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 777,
                                        "src": "1634:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "1630:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "src": "1626:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "id": 788,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1625:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 789,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 775,
                                "src": "1640:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "1625:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1643:23:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 782,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1617:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1617:50:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 793,
                        "nodeType": "ExpressionStatement",
                        "src": "1617:50:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 795,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 775,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 795,
                        "src": "1563:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 774,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1563:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 777,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 795,
                        "src": "1573:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 776,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1573:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1562:20:4"
                  },
                  "returnParameters": {
                    "id": 781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 780,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 795,
                        "src": "1606:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 779,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1606:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1605:10:4"
                  },
                  "scope": 796,
                  "src": "1550:119:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 842,
              "src": "1394:278:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 841,
              "linearizedBaseContracts": [
                841
              ],
              "name": "BoringMath32",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 817,
                    "nodeType": "Block",
                    "src": "1770:56:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 810,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 806,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 803,
                                      "src": "1780:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 809,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 807,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 798,
                                        "src": "1784:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 808,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 800,
                                        "src": "1788:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "1784:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "1780:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "id": 811,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1779:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 812,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 800,
                                "src": "1794:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1779:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1797:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 805,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1771:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1771:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 816,
                        "nodeType": "ExpressionStatement",
                        "src": "1771:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 818,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 798,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 818,
                        "src": "1717:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 797,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1717:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 800,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 818,
                        "src": "1727:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 799,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1727:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1716:20:4"
                  },
                  "returnParameters": {
                    "id": 804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 803,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 818,
                        "src": "1760:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 802,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1760:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1759:10:4"
                  },
                  "scope": 841,
                  "src": "1704:122:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 839,
                    "nodeType": "Block",
                    "src": "1898:53:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 828,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 825,
                                      "src": "1908:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 831,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 829,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 820,
                                        "src": "1912:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 830,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 822,
                                        "src": "1916:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "1912:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "1908:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "id": 833,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1907:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 834,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 820,
                                "src": "1922:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1907:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1925:23:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 827,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1899:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1899:50:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 838,
                        "nodeType": "ExpressionStatement",
                        "src": "1899:50:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 840,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 820,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 840,
                        "src": "1845:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 819,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1845:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 822,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 840,
                        "src": "1855:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 821,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1855:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1844:20:4"
                  },
                  "returnParameters": {
                    "id": 826,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 825,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 840,
                        "src": "1888:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 824,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1888:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1887:10:4"
                  },
                  "scope": 841,
                  "src": "1832:119:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 842,
              "src": "1676:278:4"
            }
          ],
          "src": "33:1921:4"
        },
        "id": 4
      },
      "contracts/MasterChefV2.sol": {
        "ast": {
          "absolutePath": "contracts/MasterChefV2.sol",
          "exportedSymbols": {
            "IMigratorChef": [
              858
            ],
            "MasterChefV2": [
              2091
            ]
          },
          "id": 2092,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 843,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:5"
            },
            {
              "id": 844,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "57:33:5"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 845,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 842,
              "src": "92:74:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
              "id": 846,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 146,
              "src": "167:69:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "id": 847,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 272,
              "src": "237:67:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/SignedSafeMath.sol",
              "file": "./libraries/SignedSafeMath.sol",
              "id": 848,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 3519,
              "src": "305:40:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "./interfaces/IRewarder.sol",
              "id": 849,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 3321,
              "src": "346:36:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterChef.sol",
              "file": "./interfaces/IMasterChef.sol",
              "id": 850,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 3286,
              "src": "383:38:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 858,
              "linearizedBaseContracts": [
                858
              ],
              "name": "IMigratorChef",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ce5494bb",
                  "id": 857,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 853,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 852,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 857,
                        "src": "614:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 851,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "614:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "613:14:5"
                  },
                  "returnParameters": {
                    "id": 856,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 855,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 857,
                        "src": "646:6:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 854,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "646:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "645:8:5"
                  },
                  "scope": 858,
                  "src": "597:57:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2092,
              "src": "423:233:5"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 860,
                    "name": "BoringOwnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "1120:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnable_$271",
                      "typeString": "contract BoringOwnable"
                    }
                  },
                  "id": 861,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1120:13:5"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 862,
                    "name": "BoringBatchable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 145,
                    "src": "1135:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringBatchable_$145",
                      "typeString": "contract BoringBatchable"
                    }
                  },
                  "id": 863,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1135:15:5"
                }
              ],
              "contractDependencies": [
                110,
                145,
                152,
                271
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 859,
                "nodeType": "StructuredDocumentation",
                "src": "658:437:5",
                "text": "@dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\n It is the only address with minting rights for PICHI.\n The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\n that is deposited into the MasterChef V1 (MCV1) contract.\n The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives."
              },
              "fullyImplemented": true,
              "id": 2091,
              "linearizedBaseContracts": [
                2091,
                145,
                110,
                271,
                152
              ],
              "name": "MasterChefV2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 866,
                  "libraryName": {
                    "contractScope": null,
                    "id": 864,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "1163:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1157:29:5",
                  "typeName": {
                    "id": 865,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1178:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 869,
                  "libraryName": {
                    "contractScope": null,
                    "id": 867,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 751,
                    "src": "1197:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$751",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1191:32:5",
                  "typeName": {
                    "id": 868,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "1215:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 872,
                  "libraryName": {
                    "contractScope": null,
                    "id": 870,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "1234:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1228:29:5",
                  "typeName": {
                    "contractScope": null,
                    "id": 871,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "1250:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 875,
                  "libraryName": {
                    "contractScope": null,
                    "id": 873,
                    "name": "SignedSafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3518,
                    "src": "1268:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedSafeMath_$3518",
                      "typeString": "library SignedSafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1262:32:5",
                  "typeName": {
                    "id": 874,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                },
                {
                  "canonicalName": "MasterChefV2.UserInfo",
                  "id": 880,
                  "members": [
                    {
                      "constant": false,
                      "id": 877,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 880,
                      "src": "1482:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 876,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1482:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 879,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 880,
                      "src": "1506:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 878,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1506:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 2091,
                  "src": "1456:74:5",
                  "visibility": "public"
                },
                {
                  "canonicalName": "MasterChefV2.PoolInfo",
                  "id": 887,
                  "members": [
                    {
                      "constant": false,
                      "id": 882,
                      "mutability": "mutable",
                      "name": "accPichiPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 887,
                      "src": "1741:24:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 881,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1741:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 884,
                      "mutability": "mutable",
                      "name": "lastRewardBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 887,
                      "src": "1775:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 883,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1775:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 886,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 887,
                      "src": "1807:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 885,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1807:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 2091,
                  "src": "1715:116:5",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 888,
                    "nodeType": "StructuredDocumentation",
                    "src": "1837:34:5",
                    "text": "@dev Address of MCV1 contract."
                  },
                  "functionSelector": "edd8b170",
                  "id": 890,
                  "mutability": "immutable",
                  "name": "MASTER_CHEF",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "1876:40:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterChef_$3285",
                    "typeString": "contract IMasterChef"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 889,
                    "name": "IMasterChef",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3285,
                    "src": "1876:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterChef_$3285",
                      "typeString": "contract IMasterChef"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 891,
                    "nodeType": "StructuredDocumentation",
                    "src": "1922:35:5",
                    "text": "@dev Address of PICHI contract."
                  },
                  "functionSelector": "e7d77cba",
                  "id": 893,
                  "mutability": "immutable",
                  "name": "PICHI",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "1962:29:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 892,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "1962:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 894,
                    "nodeType": "StructuredDocumentation",
                    "src": "1997:47:5",
                    "text": "@dev The index of MCV2 master pool in MCV1."
                  },
                  "functionSelector": "61621aaa",
                  "id": 896,
                  "mutability": "immutable",
                  "name": "MASTER_PID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2049:35:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 895,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2049:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7cd07e47",
                  "id": 898,
                  "mutability": "mutable",
                  "name": "migrator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2192:29:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMigratorChef_$858",
                    "typeString": "contract IMigratorChef"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 897,
                    "name": "IMigratorChef",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 858,
                    "src": "2192:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMigratorChef_$858",
                      "typeString": "contract IMigratorChef"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 899,
                    "nodeType": "StructuredDocumentation",
                    "src": "2228:32:5",
                    "text": "@dev Info of each MCV2 pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 902,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2265:26:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                    "typeString": "struct MasterChefV2.PoolInfo[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 900,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 887,
                      "src": "2265:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                        "typeString": "struct MasterChefV2.PoolInfo"
                      }
                    },
                    "id": 901,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2265:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage_ptr",
                      "typeString": "struct MasterChefV2.PoolInfo[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 903,
                    "nodeType": "StructuredDocumentation",
                    "src": "2297:52:5",
                    "text": "@dev Address of the LP token for each MCV2 pool."
                  },
                  "functionSelector": "78ed5d1f",
                  "id": 906,
                  "mutability": "mutable",
                  "name": "lpToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2354:23:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                    "typeString": "contract IERC20[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 904,
                      "name": "IERC20",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 337,
                      "src": "2354:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$337",
                        "typeString": "contract IERC20"
                      }
                    },
                    "id": 905,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2354:8:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                      "typeString": "contract IERC20[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 907,
                    "nodeType": "StructuredDocumentation",
                    "src": "2383:54:5",
                    "text": "@dev Address of each `IRewarder` contract in MCV2."
                  },
                  "functionSelector": "c346253d",
                  "id": 910,
                  "mutability": "mutable",
                  "name": "rewarder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2442:27:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                    "typeString": "contract IRewarder[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 908,
                      "name": "IRewarder",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3320,
                      "src": "2442:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IRewarder_$3320",
                        "typeString": "contract IRewarder"
                      }
                    },
                    "id": 909,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2442:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage_ptr",
                      "typeString": "contract IRewarder[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 911,
                    "nodeType": "StructuredDocumentation",
                    "src": "2476:49:5",
                    "text": "@dev Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 917,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2530:66:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo))"
                  },
                  "typeName": {
                    "id": 916,
                    "keyType": {
                      "id": 912,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2539:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2530:50:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo))"
                    },
                    "valueType": {
                      "id": 915,
                      "keyType": {
                        "id": 913,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2559:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2550:29:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                        "typeString": "mapping(address => struct MasterChefV2.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 914,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 880,
                        "src": "2570:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                          "typeString": "struct MasterChefV2.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 918,
                    "nodeType": "StructuredDocumentation",
                    "src": "2602:88:5",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "functionSelector": "17caf6f1",
                  "id": 920,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2695:30:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 919,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2695:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 923,
                  "mutability": "constant",
                  "name": "MASTERCHEF_PICHI_PER_BLOCK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2732:58:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 921,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2732:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653230",
                    "id": 922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2786:4:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                      "typeString": "int_const 100000000000000000000"
                    },
                    "value": "1e20"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 926,
                  "mutability": "constant",
                  "name": "ACC_PICHI_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2796:51:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2796:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2843:4:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 936,
                  "name": "Deposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 928,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 936,
                        "src": "2868:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 927,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2868:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 930,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 936,
                        "src": "2890:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 929,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2890:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 932,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 936,
                        "src": "2911:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 931,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2911:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 934,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 936,
                        "src": "2927:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 933,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2927:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2867:79:5"
                  },
                  "src": "2854:93:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 946,
                  "name": "Withdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 938,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 946,
                        "src": "2967:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 937,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2967:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 940,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 946,
                        "src": "2989:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 939,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2989:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 942,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 946,
                        "src": "3010:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 941,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3010:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 944,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 946,
                        "src": "3026:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 943,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3026:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2966:79:5"
                  },
                  "src": "2952:94:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 956,
                  "name": "EmergencyWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 948,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 956,
                        "src": "3075:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 947,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3075:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 950,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 956,
                        "src": "3097:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 949,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3097:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 952,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 956,
                        "src": "3118:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 951,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3118:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 954,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 956,
                        "src": "3134:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 953,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3134:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3074:79:5"
                  },
                  "src": "3051:103:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 964,
                  "name": "Harvest",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 958,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 964,
                        "src": "3173:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 957,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3173:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 960,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 964,
                        "src": "3195:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3195:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 962,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 964,
                        "src": "3216:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3216:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3172:59:5"
                  },
                  "src": "3159:73:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 974,
                  "name": "LogPoolAddition",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 966,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 974,
                        "src": "3259:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 965,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3259:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 968,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 974,
                        "src": "3280:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3280:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 970,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 974,
                        "src": "3300:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 969,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "3300:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 972,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 974,
                        "src": "3324:26:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 971,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "3324:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3258:93:5"
                  },
                  "src": "3237:115:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 984,
                  "name": "LogSetPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 983,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 976,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 984,
                        "src": "3374:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3374:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 978,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 984,
                        "src": "3395:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3395:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 980,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 984,
                        "src": "3415:26:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 979,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "3415:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 982,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 984,
                        "src": "3443:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 981,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3443:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3373:85:5"
                  },
                  "src": "3357:102:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 994,
                  "name": "LogUpdatePool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 986,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 994,
                        "src": "3484:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3484:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 988,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardBlock",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 994,
                        "src": "3505:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 987,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3505:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 990,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 994,
                        "src": "3529:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 989,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3529:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 992,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accPichiPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 994,
                        "src": "3547:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 991,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3547:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3483:89:5"
                  },
                  "src": "3464:109:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 996,
                  "name": "LogInit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 995,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3591:2:5"
                  },
                  "src": "3578:16:5"
                },
                {
                  "body": {
                    "id": 1018,
                    "nodeType": "Block",
                    "src": "3889:101:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1006,
                            "name": "MASTER_CHEF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 890,
                            "src": "3899:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterChef_$3285",
                              "typeString": "contract IMasterChef"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1007,
                            "name": "_MASTER_CHEF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 999,
                            "src": "3913:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterChef_$3285",
                              "typeString": "contract IMasterChef"
                            }
                          },
                          "src": "3899:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterChef_$3285",
                            "typeString": "contract IMasterChef"
                          }
                        },
                        "id": 1009,
                        "nodeType": "ExpressionStatement",
                        "src": "3899:26:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1010,
                            "name": "PICHI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 893,
                            "src": "3935:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1011,
                            "name": "_pichi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1001,
                            "src": "3943:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3935:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 1013,
                        "nodeType": "ExpressionStatement",
                        "src": "3935:14:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1014,
                            "name": "MASTER_PID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 896,
                            "src": "3959:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1015,
                            "name": "_MASTER_PID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1003,
                            "src": "3972:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3959:24:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1017,
                        "nodeType": "ExpressionStatement",
                        "src": "3959:24:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 997,
                    "nodeType": "StructuredDocumentation",
                    "src": "3600:203:5",
                    "text": "@param _MASTER_CHEF The PolyCityDex MCV1 contract address.\n @param _pichi The PICHI token contract address.\n @param _MASTER_PID The pool ID of the dummy token on the base MCV1 contract."
                  },
                  "id": 1019,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 999,
                        "mutability": "mutable",
                        "name": "_MASTER_CHEF",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1019,
                        "src": "3820:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterChef_$3285",
                          "typeString": "contract IMasterChef"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 998,
                          "name": "IMasterChef",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3285,
                          "src": "3820:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterChef_$3285",
                            "typeString": "contract IMasterChef"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1001,
                        "mutability": "mutable",
                        "name": "_pichi",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1019,
                        "src": "3846:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1000,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "3846:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1003,
                        "mutability": "mutable",
                        "name": "_MASTER_PID",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1019,
                        "src": "3861:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1002,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3861:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3819:62:5"
                  },
                  "returnParameters": {
                    "id": 1005,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3889:0:5"
                  },
                  "scope": 2091,
                  "src": "3808:182:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1072,
                    "nodeType": "Block",
                    "src": "4443:343:5",
                    "statements": [
                      {
                        "assignments": [
                          1026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1026,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1072,
                            "src": "4453:15:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1025,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4453:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1032,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1029,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4492:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4492:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1027,
                              "name": "dummyToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1022,
                              "src": "4471:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "4471:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4471:32:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4453:50:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1034,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1026,
                                "src": "4521:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4532:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4521:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d61737465724368656656323a2042616c616e6365206d757374206578636565642030",
                              "id": 1037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4535:37:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0e871e6ed6c66f490f6ac471b1b62f1c2f31fc35f4cf61165473eb8eae289983",
                                "typeString": "literal_string \"MasterChefV2: Balance must exceed 0\""
                              },
                              "value": "MasterChefV2: Balance must exceed 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0e871e6ed6c66f490f6ac471b1b62f1c2f31fc35f4cf61165473eb8eae289983",
                                "typeString": "literal_string \"MasterChefV2: Balance must exceed 0\""
                              }
                            ],
                            "id": 1033,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4513:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4513:60:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1039,
                        "nodeType": "ExpressionStatement",
                        "src": "4513:60:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1043,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4611:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4611:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1047,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "4631:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                ],
                                "id": 1046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4623:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1045,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4623:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4623:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1049,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1026,
                              "src": "4638:7: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,
                              "id": 1040,
                              "name": "dummyToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1022,
                              "src": "4583:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 552,
                            "src": "4583:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 1050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4583:63:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1051,
                        "nodeType": "ExpressionStatement",
                        "src": "4583:63:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1057,
                                  "name": "MASTER_CHEF",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 890,
                                  "src": "4683:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMasterChef_$3285",
                                    "typeString": "contract IMasterChef"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IMasterChef_$3285",
                                    "typeString": "contract IMasterChef"
                                  }
                                ],
                                "id": 1056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4675:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1055,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4675:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4675:20:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1059,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1026,
                              "src": "4697:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1052,
                              "name": "dummyToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1022,
                              "src": "4656:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 303,
                            "src": "4656:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 1060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4656:49:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1061,
                        "nodeType": "ExpressionStatement",
                        "src": "4656:49:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1065,
                              "name": "MASTER_PID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 896,
                              "src": "4735:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1066,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1026,
                              "src": "4747:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1062,
                              "name": "MASTER_CHEF",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 890,
                              "src": "4715:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMasterChef_$3285",
                                "typeString": "contract IMasterChef"
                              }
                            },
                            "id": 1064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3284,
                            "src": "4715:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256) external"
                            }
                          },
                          "id": 1067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4715:40:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1068,
                        "nodeType": "ExpressionStatement",
                        "src": "4715:40:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1069,
                            "name": "LogInit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 996,
                            "src": "4770:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 1070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4770:9:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1071,
                        "nodeType": "EmitStatement",
                        "src": "4765:14:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1020,
                    "nodeType": "StructuredDocumentation",
                    "src": "3996:400:5",
                    "text": "@dev Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting rights for PICHI.\n Any balance of transaction sender in `dummyToken` is transferred.\n The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\n @param dummyToken The address of the ERC-20 token to deposit into MCV1."
                  },
                  "functionSelector": "19ab453c",
                  "id": 1073,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "init",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1023,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1022,
                        "mutability": "mutable",
                        "name": "dummyToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1073,
                        "src": "4415:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1021,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "4415:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4414:19:5"
                  },
                  "returnParameters": {
                    "id": 1024,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4443:0:5"
                  },
                  "scope": 2091,
                  "src": "4401:385:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1084,
                    "nodeType": "Block",
                    "src": "4897:40:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1079,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1077,
                            "src": "4907:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1080,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "4915:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                "typeString": "struct MasterChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 1081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4915:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4907:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1083,
                        "nodeType": "ExpressionStatement",
                        "src": "4907:23:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1074,
                    "nodeType": "StructuredDocumentation",
                    "src": "4792:42:5",
                    "text": "@dev Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 1085,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1075,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4858:2:5"
                  },
                  "returnParameters": {
                    "id": 1078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1077,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1085,
                        "src": "4882:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4882:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4881:15:5"
                  },
                  "scope": 2091,
                  "src": "4839:98:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1146,
                    "nodeType": "Block",
                    "src": "5354:441:5",
                    "statements": [
                      {
                        "assignments": [
                          1098
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1098,
                            "mutability": "mutable",
                            "name": "lastRewardBlock",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1146,
                            "src": "5364:23:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1097,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5364:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1101,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1099,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "5390:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5390:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5364:38:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1102,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 920,
                            "src": "5412:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1105,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1088,
                                "src": "5450:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1103,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 920,
                                "src": "5430:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "5430:19: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": 1106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5430:31:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5412:49:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1108,
                        "nodeType": "ExpressionStatement",
                        "src": "5412:49:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1112,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1090,
                              "src": "5484:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1109,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 906,
                              "src": "5471:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 1111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5471:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IERC20_$337_$returns$__$",
                              "typeString": "function (contract IERC20)"
                            }
                          },
                          "id": 1113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5471:22:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1114,
                        "nodeType": "ExpressionStatement",
                        "src": "5471:22:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1118,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1092,
                              "src": "5517:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1115,
                              "name": "rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 910,
                              "src": "5503:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                "typeString": "contract IRewarder[] storage ref"
                              }
                            },
                            "id": 1117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5503:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IRewarder_$3320_$returns$__$",
                              "typeString": "function (contract IRewarder)"
                            }
                          },
                          "id": 1119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5503:24:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1120,
                        "nodeType": "ExpressionStatement",
                        "src": "5503:24:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1125,
                                      "name": "allocPoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1088,
                                      "src": "5587:10:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "5587:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 1127,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5587:17:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1128,
                                      "name": "lastRewardBlock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1098,
                                      "src": "5635:15:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1129,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "5635:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 1130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5635:22:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1131,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5689:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1124,
                                "name": "PoolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 887,
                                "src": "5552:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_PoolInfo_$887_storage_ptr_$",
                                  "typeString": "type(struct MasterChefV2.PoolInfo storage pointer)"
                                }
                              },
                              "id": 1132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "allocPoint",
                                "lastRewardBlock",
                                "accPichiPerShare"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "5552:149:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                "typeString": "struct MasterChefV2.PoolInfo memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                "typeString": "struct MasterChefV2.PoolInfo memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1121,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "5538:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                "typeString": "struct MasterChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 1123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5538:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_PoolInfo_$887_storage_$returns$__$",
                              "typeString": "function (struct MasterChefV2.PoolInfo storage ref)"
                            }
                          },
                          "id": 1133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5538:164:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1134,
                        "nodeType": "ExpressionStatement",
                        "src": "5538:164:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5752:1:5",
                                  "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,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1136,
                                    "name": "lpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 906,
                                    "src": "5733:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                      "typeString": "contract IERC20[] storage ref"
                                    }
                                  },
                                  "id": 1137,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5733:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 599,
                                "src": "5733:18: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": 1140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5733:21:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1141,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1088,
                              "src": "5756:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1142,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1090,
                              "src": "5768:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1143,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1092,
                              "src": "5778:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "id": 1135,
                            "name": "LogPoolAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 974,
                            "src": "5717:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$337_$_t_contract$_IRewarder_$3320_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IERC20,contract IRewarder)"
                            }
                          },
                          "id": 1144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5717:71:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1145,
                        "nodeType": "EmitStatement",
                        "src": "5712:76:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1086,
                    "nodeType": "StructuredDocumentation",
                    "src": "4943:318:5",
                    "text": "@dev Add a new LP to the pool. Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _lpToken Address of the LP ERC-20 token.\n @param _rewarder Address of the rewarder delegate."
                  },
                  "functionSelector": "ab7de098",
                  "id": 1147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1095,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1094,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5344:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5344:9:5"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1088,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1147,
                        "src": "5279:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1087,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5279:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1090,
                        "mutability": "mutable",
                        "name": "_lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1147,
                        "src": "5299:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1089,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "5299:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1092,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1147,
                        "src": "5316:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1091,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "5316:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5278:58:5"
                  },
                  "returnParameters": {
                    "id": 1096,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5354:0:5"
                  },
                  "scope": 2091,
                  "src": "5266:529:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1204,
                    "nodeType": "Block",
                    "src": "6281:304:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1161,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 920,
                            "src": "6291:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1170,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1152,
                                "src": "6360:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1164,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 902,
                                        "src": "6329:8:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                          "typeString": "struct MasterChefV2.PoolInfo storage ref[] storage ref"
                                        }
                                      },
                                      "id": 1166,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1165,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1150,
                                        "src": "6338:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6329:14:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                                        "typeString": "struct MasterChefV2.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 1167,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 886,
                                    "src": "6329:25:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1162,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 920,
                                    "src": "6309:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1163,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "6309:19: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": 1168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6309:46:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "6309:50: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": 1171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6309:63:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6291:81:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1173,
                        "nodeType": "ExpressionStatement",
                        "src": "6291:81:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1174,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 902,
                                "src": "6382:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                  "typeString": "struct MasterChefV2.PoolInfo storage ref[] storage ref"
                                }
                              },
                              "id": 1176,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1175,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1150,
                                "src": "6391:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6382:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                                "typeString": "struct MasterChefV2.PoolInfo storage ref"
                              }
                            },
                            "id": 1177,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 886,
                            "src": "6382:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1178,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1152,
                                "src": "6410:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 679,
                              "src": "6410:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 1180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6410:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "6382:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 1182,
                        "nodeType": "ExpressionStatement",
                        "src": "6382:46:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 1183,
                          "name": "overwrite",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1156,
                          "src": "6442:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1191,
                        "nodeType": "IfStatement",
                        "src": "6438:46:5",
                        "trueBody": {
                          "id": 1190,
                          "nodeType": "Block",
                          "src": "6453:31:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1184,
                                    "name": "rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 910,
                                    "src": "6455:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                      "typeString": "contract IRewarder[] storage ref"
                                    }
                                  },
                                  "id": 1186,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1185,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1150,
                                    "src": "6464:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6455:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$3320",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1187,
                                  "name": "_rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1154,
                                  "src": "6472:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$3320",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "src": "6455:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 1189,
                              "nodeType": "ExpressionStatement",
                              "src": "6455:26:5"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1193,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1150,
                              "src": "6509:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1194,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1152,
                              "src": "6515:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 1195,
                                "name": "overwrite",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1156,
                                "src": "6528:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1197,
                                  "name": "rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 910,
                                  "src": "6552:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                    "typeString": "contract IRewarder[] storage ref"
                                  }
                                },
                                "id": 1199,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1198,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1150,
                                  "src": "6561:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6552:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 1200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "6528:38:5",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 1196,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1154,
                                "src": "6540:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1201,
                              "name": "overwrite",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1156,
                              "src": "6568:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1192,
                            "name": "LogSetPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 984,
                            "src": "6498:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IRewarder_$3320_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IRewarder,bool)"
                            }
                          },
                          "id": 1202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6498:80:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1203,
                        "nodeType": "EmitStatement",
                        "src": "6493:85:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1148,
                    "nodeType": "StructuredDocumentation",
                    "src": "5801:373:5",
                    "text": "@dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool.\n @param _rewarder Address of the rewarder delegate.\n @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                  },
                  "functionSelector": "88bba42f",
                  "id": 1205,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1159,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "6271:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6271:9:5"
                    }
                  ],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1150,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1205,
                        "src": "6192:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1149,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6192:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1152,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1205,
                        "src": "6206:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6206:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1154,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1205,
                        "src": "6227:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1153,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "6227:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1156,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1205,
                        "src": "6248:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1155,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6248:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6191:72:5"
                  },
                  "returnParameters": {
                    "id": 1160,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6281:0:5"
                  },
                  "scope": 2091,
                  "src": "6179:406:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1217,
                    "nodeType": "Block",
                    "src": "6783:37:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1213,
                            "name": "migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 898,
                            "src": "6793:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorChef_$858",
                              "typeString": "contract IMigratorChef"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1214,
                            "name": "_migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1208,
                            "src": "6804:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorChef_$858",
                              "typeString": "contract IMigratorChef"
                            }
                          },
                          "src": "6793:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorChef_$858",
                            "typeString": "contract IMigratorChef"
                          }
                        },
                        "id": 1216,
                        "nodeType": "ExpressionStatement",
                        "src": "6793:20:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1206,
                    "nodeType": "StructuredDocumentation",
                    "src": "6591:124:5",
                    "text": "@dev Set the `migrator` contract. Can only be called by the owner.\n @param _migrator The contract address to set."
                  },
                  "functionSelector": "23cf3118",
                  "id": 1218,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1211,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1210,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "6773:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6773:9:5"
                    }
                  ],
                  "name": "setMigrator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1208,
                        "mutability": "mutable",
                        "name": "_migrator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1218,
                        "src": "6741:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMigratorChef_$858",
                          "typeString": "contract IMigratorChef"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1207,
                          "name": "IMigratorChef",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 858,
                          "src": "6741:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorChef_$858",
                            "typeString": "contract IMigratorChef"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6740:25:5"
                  },
                  "returnParameters": {
                    "id": 1212,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6783:0:5"
                  },
                  "scope": 2091,
                  "src": "6720:100:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1289,
                    "nodeType": "Block",
                    "src": "7009:436:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1227,
                                    "name": "migrator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 898,
                                    "src": "7035:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMigratorChef_$858",
                                      "typeString": "contract IMigratorChef"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMigratorChef_$858",
                                      "typeString": "contract IMigratorChef"
                                    }
                                  ],
                                  "id": 1226,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7027:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1225,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7027:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7027:17:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7056: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": 1230,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7048:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1229,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7048:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7048:10:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7027:31:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d61737465724368656656323a206e6f206d69677261746f7220736574",
                              "id": 1234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7060:31:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db733e5612b6ea507bf1315a9949f7b2f36477c7d6bedf5cbd0acae80e12dfdf",
                                "typeString": "literal_string \"MasterChefV2: no migrator set\""
                              },
                              "value": "MasterChefV2: no migrator set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db733e5612b6ea507bf1315a9949f7b2f36477c7d6bedf5cbd0acae80e12dfdf",
                                "typeString": "literal_string \"MasterChefV2: no migrator set\""
                              }
                            ],
                            "id": 1224,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7019:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7019:73:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1236,
                        "nodeType": "ExpressionStatement",
                        "src": "7019:73:5"
                      },
                      {
                        "assignments": [
                          1238
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1238,
                            "mutability": "mutable",
                            "name": "_lpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1289,
                            "src": "7102:15:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1237,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 337,
                              "src": "7102:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1242,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1239,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 906,
                            "src": "7120:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                              "typeString": "contract IERC20[] storage ref"
                            }
                          },
                          "id": 1241,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1240,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1221,
                            "src": "7128:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7120:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7102:31:5"
                      },
                      {
                        "assignments": [
                          1244
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1244,
                            "mutability": "mutable",
                            "name": "bal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1289,
                            "src": "7143:11:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1243,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7143:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1252,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1249,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7184:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                ],
                                "id": 1248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7176:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1247,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7176:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7176:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1245,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1238,
                              "src": "7157:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "7157:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7157:33:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7143:47:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1258,
                                  "name": "migrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 898,
                                  "src": "7225:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMigratorChef_$858",
                                    "typeString": "contract IMigratorChef"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IMigratorChef_$858",
                                    "typeString": "contract IMigratorChef"
                                  }
                                ],
                                "id": 1257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7217:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1256,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7217:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7217:17:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1260,
                              "name": "bal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1244,
                              "src": "7236:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1253,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1238,
                              "src": "7200:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 303,
                            "src": "7200:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 1261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7200:40:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1262,
                        "nodeType": "ExpressionStatement",
                        "src": "7200:40:5"
                      },
                      {
                        "assignments": [
                          1264
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1264,
                            "mutability": "mutable",
                            "name": "newLpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1289,
                            "src": "7250:17:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1263,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 337,
                              "src": "7250:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1269,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1267,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1238,
                              "src": "7287:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1265,
                              "name": "migrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 898,
                              "src": "7270:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMigratorChef_$858",
                                "typeString": "contract IMigratorChef"
                              }
                            },
                            "id": 1266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "migrate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 857,
                            "src": "7270:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$337_$returns$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20) external returns (contract IERC20)"
                            }
                          },
                          "id": 1268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7270:26:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7250:46:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1271,
                                "name": "bal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1244,
                                "src": "7314:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1276,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "7350:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                          "typeString": "contract MasterChefV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                          "typeString": "contract MasterChefV2"
                                        }
                                      ],
                                      "id": 1275,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7342:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1274,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7342:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1277,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7342:13:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1272,
                                    "name": "newLpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1264,
                                    "src": "7321:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1273,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "7321:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 1278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7321:35:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7314:42:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d61737465724368656656323a206d696772617465642062616c616e6365206d757374206d61746368",
                              "id": 1280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7358:43:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_52b373b8abd140702e448133a0dd7129935d941acfcf9ee8942c32166eb56caf",
                                "typeString": "literal_string \"MasterChefV2: migrated balance must match\""
                              },
                              "value": "MasterChefV2: migrated balance must match"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_52b373b8abd140702e448133a0dd7129935d941acfcf9ee8942c32166eb56caf",
                                "typeString": "literal_string \"MasterChefV2: migrated balance must match\""
                              }
                            ],
                            "id": 1270,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7306:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7306:96:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1282,
                        "nodeType": "ExpressionStatement",
                        "src": "7306:96:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1283,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 906,
                              "src": "7412:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 1285,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1284,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1221,
                              "src": "7420:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7412:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1286,
                            "name": "newLpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1264,
                            "src": "7428:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "7412:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 1288,
                        "nodeType": "ExpressionStatement",
                        "src": "7412:26:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1219,
                    "nodeType": "StructuredDocumentation",
                    "src": "6826:140:5",
                    "text": "@dev Migrate LP token to another LP contract through the `migrator` contract.\n @param _pid The index of the pool. See `poolInfo`."
                  },
                  "functionSelector": "454b0608",
                  "id": 1290,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1221,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1290,
                        "src": "6988:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6988:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6987:14:5"
                  },
                  "returnParameters": {
                    "id": 1223,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7009:0:5"
                  },
                  "scope": 2091,
                  "src": "6971:474:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1396,
                    "nodeType": "Block",
                    "src": "7755:701:5",
                    "statements": [
                      {
                        "assignments": [
                          1301
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1301,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1396,
                            "src": "7765:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct MasterChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1300,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "7765:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct MasterChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1305,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1302,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "7788:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                              "typeString": "struct MasterChefV2.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 1304,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1303,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1293,
                            "src": "7797:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7788:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                            "typeString": "struct MasterChefV2.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7765:37:5"
                      },
                      {
                        "assignments": [
                          1307
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1307,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1396,
                            "src": "7812:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct MasterChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1306,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "7812:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1313,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1308,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "7836:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1310,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1309,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1293,
                              "src": "7845:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7836:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct MasterChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1312,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1311,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1295,
                            "src": "7851:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7836:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct MasterChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7812:45:5"
                      },
                      {
                        "assignments": [
                          1315
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1315,
                            "mutability": "mutable",
                            "name": "accPichiPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1396,
                            "src": "7867:24:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1314,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7867:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1318,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1316,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1301,
                            "src": "7894:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct MasterChefV2.PoolInfo memory"
                            }
                          },
                          "id": 1317,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accPichiPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 882,
                          "src": "7894:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7867:48:5"
                      },
                      {
                        "assignments": [
                          1320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1320,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1396,
                            "src": "7925:16:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1319,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7925:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1330,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1327,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7976:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                ],
                                "id": 1326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7968:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1325,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7968:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7968:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1321,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "7944:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1323,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1322,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1293,
                                "src": "7952:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7944:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "7944:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7944:38:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7925:57:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1331,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "7996:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7996:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1333,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1301,
                                "src": "8011:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                  "typeString": "struct MasterChefV2.PoolInfo memory"
                                }
                              },
                              "id": 1334,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 884,
                              "src": "8011:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "7996:35:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1336,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1320,
                              "src": "8035:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8047:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8035:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7996:52:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1376,
                        "nodeType": "IfStatement",
                        "src": "7992:342:5",
                        "trueBody": {
                          "id": 1375,
                          "nodeType": "Block",
                          "src": "8050:284:5",
                          "statements": [
                            {
                              "assignments": [
                                1341
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1341,
                                  "mutability": "mutable",
                                  "name": "blocks",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1375,
                                  "src": "8064:14:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1340,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8064:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1348,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1345,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1301,
                                      "src": "8098:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct MasterChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1346,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 884,
                                    "src": "8098:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1342,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "8081:5:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 1343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8081:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1344,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "8081:16: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": 1347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8081:38:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8064:55:5"
                            },
                            {
                              "assignments": [
                                1350
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1350,
                                  "mutability": "mutable",
                                  "name": "pichiReward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1375,
                                  "src": "8133:19:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1349,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8133:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1362,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1357,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1301,
                                        "src": "8187:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                          "typeString": "struct MasterChefV2.PoolInfo memory"
                                        }
                                      },
                                      "id": 1358,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 886,
                                      "src": "8187:15:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 1353,
                                            "name": "pichiPerBlock",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1453,
                                            "src": "8166:13:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                              "typeString": "function () view returns (uint256)"
                                            }
                                          },
                                          "id": 1354,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8166:15:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1351,
                                          "name": "blocks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1341,
                                          "src": "8155:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1352,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "8155:10: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": 1355,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8155:27:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 627,
                                    "src": "8155:31: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": 1359,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8155:48:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1360,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 920,
                                  "src": "8206:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8155:66:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8133:88:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1363,
                                  "name": "accPichiPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1315,
                                  "src": "8235:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1371,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1368,
                                            "name": "ACC_PICHI_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 926,
                                            "src": "8291:19:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1366,
                                            "name": "pichiReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1350,
                                            "src": "8275:11:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1367,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "8275:15: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": 1369,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8275:36:5",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1370,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1320,
                                        "src": "8314:8:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8275:47:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1364,
                                      "name": "accPichiPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1315,
                                      "src": "8254:16:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 577,
                                    "src": "8254:20: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": 1372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8254:69:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8235:88:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1374,
                              "nodeType": "ExpressionStatement",
                              "src": "8235:88:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1377,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1298,
                            "src": "8343:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1389,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1307,
                                      "src": "8421:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1390,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "rewardDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 879,
                                    "src": "8421:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1386,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1383,
                                              "name": "accPichiPerShare",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1315,
                                              "src": "8376:16:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1380,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1307,
                                                "src": "8360:4:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                                  "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                                }
                                              },
                                              "id": 1381,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 877,
                                              "src": "8360:11:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1382,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 627,
                                            "src": "8360:15: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": 1384,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8360:33:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1385,
                                          "name": "ACC_PICHI_PRECISION",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 926,
                                          "src": "8396:19:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8360:55:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1379,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8353:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 1378,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8353:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1387,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8353:63:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "id": 1388,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3457,
                                  "src": "8353:67:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                    "typeString": "function (int256,int256) pure returns (int256)"
                                  }
                                },
                                "id": 1391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8353:84:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toUInt256",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3517,
                              "src": "8353:94:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                                "typeString": "function (int256) pure returns (uint256)"
                              }
                            },
                            "id": 1393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8353:96:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8343:106:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1395,
                        "nodeType": "ExpressionStatement",
                        "src": "8343:106:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1291,
                    "nodeType": "StructuredDocumentation",
                    "src": "7451:208:5",
                    "text": "@dev View function to see pending PICHI on frontend.\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending PICHI reward for a given user."
                  },
                  "functionSelector": "86f227f5",
                  "id": 1397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingPichi",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1296,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1293,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1397,
                        "src": "7686:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7686:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1295,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1397,
                        "src": "7700:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7700:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7685:29:5"
                  },
                  "returnParameters": {
                    "id": 1299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1298,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1397,
                        "src": "7738:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7738:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7737:17:5"
                  },
                  "scope": 2091,
                  "src": "7664:792:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1427,
                    "nodeType": "Block",
                    "src": "8690:129:5",
                    "statements": [
                      {
                        "assignments": [
                          1405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1405,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1427,
                            "src": "8700:11:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1404,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8700:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1408,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1406,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1401,
                            "src": "8714:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8714:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8700:25:5"
                      },
                      {
                        "body": {
                          "id": 1425,
                          "nodeType": "Block",
                          "src": "8769:44:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1420,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1401,
                                      "src": "8794:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1422,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1421,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1410,
                                      "src": "8799:1:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8794:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1419,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1557,
                                  "src": "8783:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct MasterChefV2.PoolInfo memory)"
                                  }
                                },
                                "id": 1423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8783:19:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                  "typeString": "struct MasterChefV2.PoolInfo memory"
                                }
                              },
                              "id": 1424,
                              "nodeType": "ExpressionStatement",
                              "src": "8783:19:5"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1413,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1410,
                            "src": "8755:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1414,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1405,
                            "src": "8759:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8755:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1426,
                        "initializationExpression": {
                          "assignments": [
                            1410
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1410,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1426,
                              "src": "8740:9:5",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1409,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8740:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1412,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8752:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8740:13:5"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "8764:3:5",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1416,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1410,
                              "src": "8766:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1418,
                          "nodeType": "ExpressionStatement",
                          "src": "8764:3:5"
                        },
                        "nodeType": "ForStatement",
                        "src": "8735:78:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1398,
                    "nodeType": "StructuredDocumentation",
                    "src": "8462:164:5",
                    "text": "@dev Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 1428,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1401,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1428,
                        "src": "8656:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1399,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8656:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1400,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "8656:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8655:25:5"
                  },
                  "returnParameters": {
                    "id": 1403,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8690:0:5"
                  },
                  "scope": 2091,
                  "src": "8631:188:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1452,
                    "nodeType": "Block",
                    "src": "8956:155:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1434,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1432,
                            "src": "8966:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1442,
                                        "name": "MASTER_PID",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 896,
                                        "src": "9049:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1440,
                                        "name": "MASTER_CHEF",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 890,
                                        "src": "9028:11:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IMasterChef_$3285",
                                          "typeString": "contract IMasterChef"
                                        }
                                      },
                                      "id": 1441,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "poolInfo",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3272,
                                      "src": "9028:20:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_PoolInfo_$3265_memory_ptr_$",
                                        "typeString": "function (uint256) view external returns (struct IMasterChef.PoolInfo memory)"
                                      }
                                    },
                                    "id": 1443,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9028:32:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$3265_memory_ptr",
                                      "typeString": "struct IMasterChef.PoolInfo memory"
                                    }
                                  },
                                  "id": 1444,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "allocPoint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3260,
                                  "src": "9028:43:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1437,
                                      "name": "MASTERCHEF_PICHI_PER_BLOCK",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 923,
                                      "src": "8983:26:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1436,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8975:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 1435,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8975:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8975:35:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 627,
                                "src": "8975:52: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": 1445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8975:97:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1446,
                                  "name": "MASTER_CHEF",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 890,
                                  "src": "9075:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMasterChef_$3285",
                                    "typeString": "contract IMasterChef"
                                  }
                                },
                                "id": 1447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalAllocPoint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3277,
                                "src": "9075:27:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 1448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9075:29:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8975:129:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8966:138:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1451,
                        "nodeType": "ExpressionStatement",
                        "src": "8966:138:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1429,
                    "nodeType": "StructuredDocumentation",
                    "src": "8825:64:5",
                    "text": "@dev Calculates and returns the `amount` of PICHI per block."
                  },
                  "functionSelector": "0a016189",
                  "id": 1453,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pichiPerBlock",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1430,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8916:2:5"
                  },
                  "returnParameters": {
                    "id": 1433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1432,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1453,
                        "src": "8940:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8940:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8939:16:5"
                  },
                  "scope": 2091,
                  "src": "8894:217:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1556,
                    "nodeType": "Block",
                    "src": "9358:701:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1461,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1459,
                            "src": "9368:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct MasterChefV2.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1462,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "9375:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                "typeString": "struct MasterChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 1464,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1463,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1456,
                              "src": "9384:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9375:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                              "typeString": "struct MasterChefV2.PoolInfo storage ref"
                            }
                          },
                          "src": "9368:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct MasterChefV2.PoolInfo memory"
                          }
                        },
                        "id": 1466,
                        "nodeType": "ExpressionStatement",
                        "src": "9368:20:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1467,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "9402:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 1468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9402:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1469,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1459,
                              "src": "9417:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                "typeString": "struct MasterChefV2.PoolInfo memory"
                              }
                            },
                            "id": 1470,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 884,
                            "src": "9417:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "9402:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1555,
                        "nodeType": "IfStatement",
                        "src": "9398:655:5",
                        "trueBody": {
                          "id": 1554,
                          "nodeType": "Block",
                          "src": "9439:614:5",
                          "statements": [
                            {
                              "assignments": [
                                1473
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1473,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1554,
                                  "src": "9453:16:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1472,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9453:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1483,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1480,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9503:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                          "typeString": "contract MasterChefV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                          "typeString": "contract MasterChefV2"
                                        }
                                      ],
                                      "id": 1479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9495:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1478,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9495:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1481,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9495:13:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1474,
                                      "name": "lpToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 906,
                                      "src": "9472:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                        "typeString": "contract IERC20[] storage ref"
                                      }
                                    },
                                    "id": 1476,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1475,
                                      "name": "pid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1456,
                                      "src": "9480:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9472:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "9472:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 1482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9472:37:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9453:56:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1484,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1473,
                                  "src": "9527:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9538:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9527:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1529,
                              "nodeType": "IfStatement",
                              "src": "9523:338:5",
                              "trueBody": {
                                "id": 1528,
                                "nodeType": "Block",
                                "src": "9541:320:5",
                                "statements": [
                                  {
                                    "assignments": [
                                      1488
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 1488,
                                        "mutability": "mutable",
                                        "name": "blocks",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 1528,
                                        "src": "9559:14:5",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 1487,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9559:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 1495,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1492,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1459,
                                            "src": "9593:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                              "typeString": "struct MasterChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1493,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lastRewardBlock",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 884,
                                          "src": "9593:20:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1489,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "9576:5:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 1490,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "number",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "9576:12:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1491,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 599,
                                        "src": "9576:16: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": 1494,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9576:38:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9559:55:5"
                                  },
                                  {
                                    "assignments": [
                                      1497
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 1497,
                                        "mutability": "mutable",
                                        "name": "pichiReward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 1528,
                                        "src": "9632:19:5",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 1496,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9632:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 1509,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1508,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1504,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1459,
                                              "src": "9686:4:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                                "typeString": "struct MasterChefV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 1505,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 886,
                                            "src": "9686:15:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 1500,
                                                  "name": "pichiPerBlock",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1453,
                                                  "src": "9665:13:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                    "typeString": "function () view returns (uint256)"
                                                  }
                                                },
                                                "id": 1501,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9665:15:5",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1498,
                                                "name": "blocks",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1488,
                                                "src": "9654:6:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 1499,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "9654:10: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": 1502,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9654:27:5",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1503,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "9654:31: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": 1506,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9654:48:5",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1507,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 920,
                                        "src": "9705:15:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9654:66:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9632:88:5"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1526,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1510,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1459,
                                          "src": "9738:4:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                            "typeString": "struct MasterChefV2.PoolInfo memory"
                                          }
                                        },
                                        "id": 1512,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accPichiPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 882,
                                        "src": "9738:21:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 1521,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 1518,
                                                          "name": "ACC_PICHI_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 926,
                                                          "src": "9805:19:5",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 1516,
                                                          "name": "pichiReward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 1497,
                                                          "src": "9789:11:5",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 1517,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 627,
                                                        "src": "9789:15: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": 1519,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "9789:36:5",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 1520,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1473,
                                                      "src": "9828:8:5",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "9789:47:5",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 1522,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "9788:49:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 1523,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 653,
                                              "src": "9788:55:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 1524,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9788:57:5",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1513,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1459,
                                              "src": "9762:4:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                                "typeString": "struct MasterChefV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 1514,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accPichiPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 882,
                                            "src": "9762:21:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 1515,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 728,
                                          "src": "9762:25:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 1525,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9762:84:5",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "9738:108:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 1527,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9738:108:5"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1530,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1459,
                                    "src": "9874:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                      "typeString": "struct MasterChefV2.PoolInfo memory"
                                    }
                                  },
                                  "id": 1532,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 884,
                                  "src": "9874:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1533,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "9897:5:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 1534,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "number",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "9897:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1535,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "9897:17:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 1536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9897:19:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "9874:42:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 1538,
                              "nodeType": "ExpressionStatement",
                              "src": "9874:42:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1539,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 902,
                                    "src": "9930:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                      "typeString": "struct MasterChefV2.PoolInfo storage ref[] storage ref"
                                    }
                                  },
                                  "id": 1541,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1540,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1456,
                                    "src": "9939:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9930:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                                    "typeString": "struct MasterChefV2.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1542,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1459,
                                  "src": "9946:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                    "typeString": "struct MasterChefV2.PoolInfo memory"
                                  }
                                },
                                "src": "9930:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                                  "typeString": "struct MasterChefV2.PoolInfo storage ref"
                                }
                              },
                              "id": 1544,
                              "nodeType": "ExpressionStatement",
                              "src": "9930:20:5"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1546,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1456,
                                    "src": "9983:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1547,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1459,
                                      "src": "9988:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct MasterChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1548,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 884,
                                    "src": "9988:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1549,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1473,
                                    "src": "10010:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1550,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1459,
                                      "src": "10020:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct MasterChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1551,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accPichiPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 882,
                                    "src": "10020:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 1545,
                                  "name": "LogUpdatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 994,
                                  "src": "9969:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 1552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9969:73:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1553,
                              "nodeType": "EmitStatement",
                              "src": "9964:78:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1454,
                    "nodeType": "StructuredDocumentation",
                    "src": "9117:165:5",
                    "text": "@dev Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 1557,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1457,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1456,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1557,
                        "src": "9307:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1455,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9307:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9306:13:5"
                  },
                  "returnParameters": {
                    "id": 1460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1459,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1557,
                        "src": "9336:20:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                          "typeString": "struct MasterChefV2.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1458,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 887,
                          "src": "9336:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                            "typeString": "struct MasterChefV2.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9335:22:5"
                  },
                  "scope": 2091,
                  "src": "9287:772:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1659,
                    "nodeType": "Block",
                    "src": "10359:606:5",
                    "statements": [
                      {
                        "assignments": [
                          1568
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1568,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1659,
                            "src": "10369:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct MasterChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1567,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "10369:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct MasterChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1572,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1570,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1560,
                              "src": "10403:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1569,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1557,
                            "src": "10392:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MasterChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 1571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10392:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct MasterChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10369:38:5"
                      },
                      {
                        "assignments": [
                          1574
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1574,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1659,
                            "src": "10417:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct MasterChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1573,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "10417:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1580,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1575,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "10441:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1577,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1576,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1560,
                              "src": "10450:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10441:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct MasterChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1579,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1578,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1564,
                            "src": "10455:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10441:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct MasterChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10417:41:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1581,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1574,
                              "src": "10488:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1583,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 877,
                            "src": "10488:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1587,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1562,
                                "src": "10518:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1584,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1574,
                                  "src": "10502:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1585,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 877,
                                "src": "10502:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "10502:15: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": 1588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10502:23:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10488:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1590,
                        "nodeType": "ExpressionStatement",
                        "src": "10488:37:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1591,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1574,
                              "src": "10535:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1593,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "10535:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1601,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1568,
                                            "src": "10591:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                              "typeString": "struct MasterChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1602,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accPichiPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 882,
                                          "src": "10591:21:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1599,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1562,
                                          "src": "10580:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1600,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "10580:10: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": 1603,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10580:33:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1604,
                                      "name": "ACC_PICHI_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 926,
                                      "src": "10616:19:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10580:55:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10573:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1597,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10573:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10573:63:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1594,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1574,
                                  "src": "10553:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1595,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 879,
                                "src": "10553:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3497,
                              "src": "10553:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10553:84:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "10535:102:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1609,
                        "nodeType": "ExpressionStatement",
                        "src": "10535:102:5"
                      },
                      {
                        "assignments": [
                          1611
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1611,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1659,
                            "src": "10672:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1610,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "10672:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1615,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1612,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "10694:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1614,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1613,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1560,
                            "src": "10703:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10694:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10672:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1618,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1611,
                                "src": "10729:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10721:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1616,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10721:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10721:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10751: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": 1621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10743:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1620,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10743:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10743:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10721:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1637,
                        "nodeType": "IfStatement",
                        "src": "10717:115:5",
                        "trueBody": {
                          "id": 1636,
                          "nodeType": "Block",
                          "src": "10755:77:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1628,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1560,
                                    "src": "10793:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1629,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1564,
                                    "src": "10798:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1630,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1564,
                                    "src": "10802:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1631,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10806:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1632,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1574,
                                      "src": "10809:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1633,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "10809:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1625,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1611,
                                    "src": "10769:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "10769:23:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10769:52:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1635,
                              "nodeType": "ExpressionStatement",
                              "src": "10769:52:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1642,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10872:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10872:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1646,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "10892:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                ],
                                "id": 1645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10884:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1644,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10884:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10884:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1648,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1562,
                              "src": "10899:6: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,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1638,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "10842:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1640,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1639,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1560,
                                "src": "10850:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10842:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 552,
                            "src": "10842:29:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 1649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10842:64:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1650,
                        "nodeType": "ExpressionStatement",
                        "src": "10842:64:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1652,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10930:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10930:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1654,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1560,
                              "src": "10942:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1655,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1562,
                              "src": "10947:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1656,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1564,
                              "src": "10955:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1651,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 936,
                            "src": "10922:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 1657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10922:36:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1658,
                        "nodeType": "EmitStatement",
                        "src": "10917:41:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1558,
                    "nodeType": "StructuredDocumentation",
                    "src": "10065:224:5",
                    "text": "@dev Deposit LP tokens to MCV2 for PICHI allocation.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to deposit.\n @param to The receiver of `amount` deposit benefit."
                  },
                  "functionSelector": "8dbdbe6d",
                  "id": 1660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1560,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "10311:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1559,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10311:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1562,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "10324:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1561,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10324:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1564,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "10340:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1563,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10340:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10310:41:5"
                  },
                  "returnParameters": {
                    "id": 1566,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10359:0:5"
                  },
                  "scope": 2091,
                  "src": "10294:671:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1759,
                    "nodeType": "Block",
                    "src": "11234:604:5",
                    "statements": [
                      {
                        "assignments": [
                          1671
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1671,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1759,
                            "src": "11244:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct MasterChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1670,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "11244:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct MasterChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1675,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1673,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "11278:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1672,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1557,
                            "src": "11267:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MasterChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 1674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11267:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct MasterChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11244:38:5"
                      },
                      {
                        "assignments": [
                          1677
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1677,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1759,
                            "src": "11292:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct MasterChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1676,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "11292:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1684,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1678,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "11316:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1680,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1679,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "11325:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11316:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct MasterChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1683,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1681,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "11330:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11330:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11316:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct MasterChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11292:49:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1685,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1677,
                              "src": "11371:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1687,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "11371:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1699,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1695,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1671,
                                            "src": "11427:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                              "typeString": "struct MasterChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1696,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accPichiPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 882,
                                          "src": "11427:21:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1693,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1665,
                                          "src": "11416:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1694,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "11416:10: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": 1697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11416:33:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1698,
                                      "name": "ACC_PICHI_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 926,
                                      "src": "11452:19:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11416:55:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11409:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1691,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11409:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11409:63:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1688,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1677,
                                  "src": "11389:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1689,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 879,
                                "src": "11389:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1690,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3457,
                              "src": "11389:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11389:84:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "11371:102:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1703,
                        "nodeType": "ExpressionStatement",
                        "src": "11371:102:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1704,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1677,
                              "src": "11483:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1706,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 877,
                            "src": "11483:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1710,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1665,
                                "src": "11513:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1707,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1677,
                                  "src": "11497:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1708,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 877,
                                "src": "11497:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "11497:15: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": 1711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11497:23:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11483:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1713,
                        "nodeType": "ExpressionStatement",
                        "src": "11483:37:5"
                      },
                      {
                        "assignments": [
                          1715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1715,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1759,
                            "src": "11555:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1714,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "11555:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1719,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1716,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "11577:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1718,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1717,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1663,
                            "src": "11586:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11577:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11555:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1722,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1715,
                                "src": "11612:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11604:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1720,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11604:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11604:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1726,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11634: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": 1725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11626:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1724,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11626:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11626:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "11604:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1742,
                        "nodeType": "IfStatement",
                        "src": "11600:123:5",
                        "trueBody": {
                          "id": 1741,
                          "nodeType": "Block",
                          "src": "11638:85:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1732,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1663,
                                    "src": "11676:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1733,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "11681:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1734,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11681:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1735,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1667,
                                    "src": "11693:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1736,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11697:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1737,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1677,
                                      "src": "11700:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1738,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "11700:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1729,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1715,
                                    "src": "11652:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1731,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "11652:23:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11652:60:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1740,
                              "nodeType": "ExpressionStatement",
                              "src": "11652:60:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1747,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1667,
                              "src": "11767:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1748,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1665,
                              "src": "11771:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1743,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "11741:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1745,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1744,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1663,
                                "src": "11749:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11741:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "11741:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 1749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11741:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1750,
                        "nodeType": "ExpressionStatement",
                        "src": "11741:37:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1752,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11803:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11803:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1754,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "11815:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1755,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1665,
                              "src": "11820:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1756,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1667,
                              "src": "11828:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1751,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 946,
                            "src": "11794:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 1757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11794:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1758,
                        "nodeType": "EmitStatement",
                        "src": "11789:42:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1661,
                    "nodeType": "StructuredDocumentation",
                    "src": "10971:192:5",
                    "text": "@dev Withdraw LP tokens from MCV2.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "0ad58d2f",
                  "id": 1760,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1663,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1760,
                        "src": "11186:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1662,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11186:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1665,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1760,
                        "src": "11199:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11199:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1667,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1760,
                        "src": "11215:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11215:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11185:41:5"
                  },
                  "returnParameters": {
                    "id": 1669,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11234:0:5"
                  },
                  "scope": 2091,
                  "src": "11168:670:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1861,
                    "nodeType": "Block",
                    "src": "12058:739:5",
                    "statements": [
                      {
                        "assignments": [
                          1769
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1769,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12068:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct MasterChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1768,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "12068:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct MasterChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1773,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1771,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1763,
                              "src": "12102:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1770,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1557,
                            "src": "12091:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MasterChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 1772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12091:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct MasterChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12068:38:5"
                      },
                      {
                        "assignments": [
                          1775
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1775,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12116:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct MasterChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1774,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "12116:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1782,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1776,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "12140:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1778,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1777,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1763,
                              "src": "12149:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12140:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct MasterChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1781,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1779,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "12154:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12154:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12140:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct MasterChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12116:49:5"
                      },
                      {
                        "assignments": [
                          1784
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1784,
                            "mutability": "mutable",
                            "name": "accumulatedPichi",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12175:23:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1783,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12175:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1796,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1794,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1790,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1769,
                                      "src": "12224:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct MasterChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1791,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accPichiPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 882,
                                    "src": "12224:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1787,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1775,
                                      "src": "12208:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1788,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "12208:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1789,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 627,
                                  "src": "12208:15: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": 1792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12208:38:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1793,
                                "name": "ACC_PICHI_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 926,
                                "src": "12249:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12208:60:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12201:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 1785,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12201:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12201:68:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12175:94:5"
                      },
                      {
                        "assignments": [
                          1798
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1798,
                            "mutability": "mutable",
                            "name": "_pendingPichi",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12279:21:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1797,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12279:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1806,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1801,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1775,
                                    "src": "12324:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                      "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 1802,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 879,
                                  "src": "12324:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1799,
                                  "name": "accumulatedPichi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1784,
                                  "src": "12303:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1800,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3457,
                                "src": "12303:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 1803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12303:37:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 1804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3517,
                            "src": "12303:47:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 1805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12303:49:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12279:73:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1807,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1775,
                              "src": "12382:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1809,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "12382:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1810,
                            "name": "accumulatedPichi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "12400:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12382:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1812,
                        "nodeType": "ExpressionStatement",
                        "src": "12382:34:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1813,
                            "name": "_pendingPichi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1798,
                            "src": "12455:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12472:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12455:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1824,
                        "nodeType": "IfStatement",
                        "src": "12451:86:5",
                        "trueBody": {
                          "id": 1823,
                          "nodeType": "Block",
                          "src": "12475:62:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1819,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1765,
                                    "src": "12508:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1820,
                                    "name": "_pendingPichi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1798,
                                    "src": "12512:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1816,
                                    "name": "PICHI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 893,
                                    "src": "12489:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1818,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "12489:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 1821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12489:37:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1822,
                              "nodeType": "ExpressionStatement",
                              "src": "12489:37:5"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1826
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1826,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12555:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1825,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "12555:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1830,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1827,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "12577:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1829,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1828,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1763,
                            "src": "12586:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12577:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12555:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1833,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1826,
                                "src": "12612:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12604:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1831,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12604:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12604:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12634: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": 1836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12626:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1835,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12626:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12626:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12604:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1853,
                        "nodeType": "IfStatement",
                        "src": "12600:136:5",
                        "trueBody": {
                          "id": 1852,
                          "nodeType": "Block",
                          "src": "12638:98:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1843,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1763,
                                    "src": "12677:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1844,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12682:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1845,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12682:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1846,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1765,
                                    "src": "12694:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1847,
                                    "name": "_pendingPichi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1798,
                                    "src": "12698:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1848,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1775,
                                      "src": "12713:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1849,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "12713:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1840,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1826,
                                    "src": "12652:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "12652:23:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12652:73:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1851,
                              "nodeType": "ExpressionStatement",
                              "src": "12652:73:5"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1855,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12759:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12759:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1857,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1763,
                              "src": "12771:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1858,
                              "name": "_pendingPichi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1798,
                              "src": "12776:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1854,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 964,
                            "src": "12751:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12751:39:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1860,
                        "nodeType": "EmitStatement",
                        "src": "12746:44:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1761,
                    "nodeType": "StructuredDocumentation",
                    "src": "11844:160:5",
                    "text": "@dev Harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of PICHI rewards."
                  },
                  "functionSelector": "18fccc76",
                  "id": 1862,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1763,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1862,
                        "src": "12026:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1762,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12026:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1765,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1862,
                        "src": "12039:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12039:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12025:25:5"
                  },
                  "returnParameters": {
                    "id": 1767,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12058:0:5"
                  },
                  "scope": 2091,
                  "src": "12009:788:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1998,
                    "nodeType": "Block",
                    "src": "13150:906:5",
                    "statements": [
                      {
                        "assignments": [
                          1873
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1873,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13160:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct MasterChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1872,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "13160:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct MasterChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1877,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1875,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1865,
                              "src": "13194:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1874,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1557,
                            "src": "13183:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MasterChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 1876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13183:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct MasterChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13160:38:5"
                      },
                      {
                        "assignments": [
                          1879
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1879,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13208:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct MasterChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1878,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "13208:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1886,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1880,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "13232:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1882,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1881,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1865,
                              "src": "13241:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13232:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct MasterChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1885,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1883,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "13246:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13246:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13232:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct MasterChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13208:49:5"
                      },
                      {
                        "assignments": [
                          1888
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1888,
                            "mutability": "mutable",
                            "name": "accumulatedPichi",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13267:23:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1887,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13267:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1900,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1894,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1873,
                                      "src": "13316:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct MasterChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1895,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accPichiPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 882,
                                    "src": "13316:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1891,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1879,
                                      "src": "13300:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1892,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "13300:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 627,
                                  "src": "13300:15: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": 1896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13300:38:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1897,
                                "name": "ACC_PICHI_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 926,
                                "src": "13341:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13300:60:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13293:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 1889,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13293:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13293:68:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13267:94:5"
                      },
                      {
                        "assignments": [
                          1902
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1902,
                            "mutability": "mutable",
                            "name": "_pendingPichi",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13371:21:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1901,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13371:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1910,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1905,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1879,
                                    "src": "13416:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                      "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 1906,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 879,
                                  "src": "13416:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1903,
                                  "name": "accumulatedPichi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1888,
                                  "src": "13395:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3457,
                                "src": "13395:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 1907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13395:37:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 1908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3517,
                            "src": "13395:47:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 1909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13395:49:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13371:73:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1911,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1879,
                              "src": "13474:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1913,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "13474:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1924,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1920,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1873,
                                            "src": "13531:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                              "typeString": "struct MasterChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1921,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accPichiPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 882,
                                          "src": "13531:21:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1918,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1867,
                                          "src": "13520:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "13520:10: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": 1922,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13520:33:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1923,
                                      "name": "ACC_PICHI_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 926,
                                      "src": "13556:19:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13520:55:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1917,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13513:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1916,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13513:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1925,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13513:63:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1914,
                                "name": "accumulatedPichi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1888,
                                "src": "13492:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3457,
                              "src": "13492:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13492:85:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "13474:103:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1928,
                        "nodeType": "ExpressionStatement",
                        "src": "13474:103:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1929,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1879,
                              "src": "13587:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1931,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 877,
                            "src": "13587:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1935,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1867,
                                "src": "13617:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1932,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1879,
                                  "src": "13601:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1933,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 877,
                                "src": "13601:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "13601:15: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": 1936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13601:23:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13587:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1938,
                        "nodeType": "ExpressionStatement",
                        "src": "13587:37:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1942,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1869,
                              "src": "13686:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1943,
                              "name": "_pendingPichi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1902,
                              "src": "13690:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1939,
                              "name": "PICHI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 893,
                              "src": "13667:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "13667:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 1944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13667:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1945,
                        "nodeType": "ExpressionStatement",
                        "src": "13667:37:5"
                      },
                      {
                        "assignments": [
                          1947
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1947,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13715:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1946,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "13715:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1951,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1948,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "13737:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1950,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1949,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1865,
                            "src": "13746:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13737:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13715:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1954,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1947,
                                "src": "13772:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13764:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1952,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13764:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13764:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1958,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13794: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": 1957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13786:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1956,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13786:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1959,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13786:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "13764:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1974,
                        "nodeType": "IfStatement",
                        "src": "13760:135:5",
                        "trueBody": {
                          "id": 1973,
                          "nodeType": "Block",
                          "src": "13798:97:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1964,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1865,
                                    "src": "13836:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1965,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "13841:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13841:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1967,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1869,
                                    "src": "13853:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1968,
                                    "name": "_pendingPichi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1902,
                                    "src": "13857:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1969,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1879,
                                      "src": "13872:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct MasterChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1970,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "13872:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1961,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1947,
                                    "src": "13812:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1963,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "13812:23:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1971,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13812:72:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1972,
                              "nodeType": "ExpressionStatement",
                              "src": "13812:72:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1979,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1869,
                              "src": "13931:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1980,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1867,
                              "src": "13935:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1975,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "13905:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1977,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1976,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1865,
                                "src": "13913:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13905:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "13905:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 1981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13905:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1982,
                        "nodeType": "ExpressionStatement",
                        "src": "13905:37:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1984,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13967:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13967:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1986,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1865,
                              "src": "13979:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1987,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1867,
                              "src": "13984:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1988,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1869,
                              "src": "13992:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1983,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 946,
                            "src": "13958:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 1989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13958:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1990,
                        "nodeType": "EmitStatement",
                        "src": "13953:42:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1992,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14018:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14018:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1994,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1865,
                              "src": "14030:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1995,
                              "name": "_pendingPichi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1902,
                              "src": "14035:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1991,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 964,
                            "src": "14010:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14010:39:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1997,
                        "nodeType": "EmitStatement",
                        "src": "14005:44:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1863,
                    "nodeType": "StructuredDocumentation",
                    "src": "12807:262:5",
                    "text": "@dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens and PICHI rewards."
                  },
                  "functionSelector": "d1abb907",
                  "id": 1999,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndHarvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1865,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1999,
                        "src": "13102:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1864,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13102:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1867,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1999,
                        "src": "13115:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1866,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13115:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1869,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1999,
                        "src": "13131:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13131:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13101:41:5"
                  },
                  "returnParameters": {
                    "id": 1871,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13150:0:5"
                  },
                  "scope": 2091,
                  "src": "13074:982:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2010,
                    "nodeType": "Block",
                    "src": "14199:51:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2006,
                              "name": "MASTER_PID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 896,
                              "src": "14229:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14241:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2003,
                              "name": "MASTER_CHEF",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 890,
                              "src": "14209:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMasterChef_$3285",
                                "typeString": "contract IMasterChef"
                              }
                            },
                            "id": 2005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3284,
                            "src": "14209:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256) external"
                            }
                          },
                          "id": 2008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14209:34:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2009,
                        "nodeType": "ExpressionStatement",
                        "src": "14209:34:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2000,
                    "nodeType": "StructuredDocumentation",
                    "src": "14062:92:5",
                    "text": "@dev Harvests PICHI from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to this MCV2 contract."
                  },
                  "functionSelector": "4f70b15a",
                  "id": 2011,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harvestFromMasterChef",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2001,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14189:2:5"
                  },
                  "returnParameters": {
                    "id": 2002,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14199:0:5"
                  },
                  "scope": 2091,
                  "src": "14159:91:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2089,
                    "nodeType": "Block",
                    "src": "14486:502:5",
                    "statements": [
                      {
                        "assignments": [
                          2020
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2020,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2089,
                            "src": "14496:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct MasterChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2019,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "14496:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2027,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2021,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "14520:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MasterChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2023,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2022,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2014,
                              "src": "14529:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14520:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct MasterChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2026,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2024,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "14534:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14534:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14520:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct MasterChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14496:49:5"
                      },
                      {
                        "assignments": [
                          2029
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2029,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2089,
                            "src": "14555:14:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2028,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14555:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2032,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2030,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2020,
                            "src": "14572:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct MasterChefV2.UserInfo storage pointer"
                            }
                          },
                          "id": 2031,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 877,
                          "src": "14572:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14555:28:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2033,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2020,
                              "src": "14593:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2035,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 877,
                            "src": "14593:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14607:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14593:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2038,
                        "nodeType": "ExpressionStatement",
                        "src": "14593:15:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2039,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2020,
                              "src": "14618:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct MasterChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2041,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "14618:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14636:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14618:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2044,
                        "nodeType": "ExpressionStatement",
                        "src": "14618:19:5"
                      },
                      {
                        "assignments": [
                          2046
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2046,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2089,
                            "src": "14648:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2045,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "14648:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2050,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2047,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "14670:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2049,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2048,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2014,
                            "src": "14679:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14670:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14648:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2053,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2046,
                                "src": "14705:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14697:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2051,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14697:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14697:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14727: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": 2056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14719:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2055,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14719:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14719:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "14697:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2072,
                        "nodeType": "IfStatement",
                        "src": "14693:113:5",
                        "trueBody": {
                          "id": 2071,
                          "nodeType": "Block",
                          "src": "14731:75:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2063,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2014,
                                    "src": "14769:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2064,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "14774:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2065,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14774:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2066,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2016,
                                    "src": "14786:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14790:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14793:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2060,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2046,
                                    "src": "14745:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 2062,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "14745:23:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 2069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14745:50:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2070,
                              "nodeType": "ExpressionStatement",
                              "src": "14745:50:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2077,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2016,
                              "src": "14909:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2078,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2029,
                              "src": "14913:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2073,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "14883:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2075,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2074,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2014,
                                "src": "14891:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14883:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "14883:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14883:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2080,
                        "nodeType": "ExpressionStatement",
                        "src": "14883:37:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2082,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14953:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14953:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2084,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2014,
                              "src": "14965:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2085,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2029,
                              "src": "14970:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2086,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2016,
                              "src": "14978:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2081,
                            "name": "EmergencyWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 956,
                            "src": "14935:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 2087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14935:46:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2088,
                        "nodeType": "EmitStatement",
                        "src": "14930:51:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2012,
                    "nodeType": "StructuredDocumentation",
                    "src": "14256:166:5",
                    "text": "@dev Withdraw without caring about rewards. EMERGENCY ONLY.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "2f940c70",
                  "id": 2090,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "emergencyWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2014,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2090,
                        "src": "14454:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2013,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14454:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2016,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2090,
                        "src": "14467:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2015,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14467:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14453:25:5"
                  },
                  "returnParameters": {
                    "id": 2018,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14486:0:5"
                  },
                  "scope": 2091,
                  "src": "14427:561:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 2092,
              "src": "1095:13895:5"
            }
          ],
          "src": "33:14958:5"
        },
        "id": 5
      },
      "contracts/MiniChefV2.sol": {
        "ast": {
          "absolutePath": "contracts/MiniChefV2.sol",
          "exportedSymbols": {
            "IMigratorChef": [
              2108
            ],
            "MiniChefV2": [
              3244
            ]
          },
          "id": 3245,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2093,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:6"
            },
            {
              "id": 2094,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "57:33:6"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 2095,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 842,
              "src": "92:74:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
              "id": 2096,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 146,
              "src": "167:69:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "id": 2097,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 272,
              "src": "237:67:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/SignedSafeMath.sol",
              "file": "./libraries/SignedSafeMath.sol",
              "id": 2098,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 3519,
              "src": "305:40:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "./interfaces/IRewarder.sol",
              "id": 2099,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 3321,
              "src": "346:36:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterChef.sol",
              "file": "./interfaces/IMasterChef.sol",
              "id": 2100,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 3286,
              "src": "383:38:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 2108,
              "linearizedBaseContracts": [
                2108
              ],
              "name": "IMigratorChef",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ce5494bb",
                  "id": 2107,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2102,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2107,
                        "src": "614:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2101,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "614:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "613:14:6"
                  },
                  "returnParameters": {
                    "id": 2106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2105,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2107,
                        "src": "646:6:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2104,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "646:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "645:8:6"
                  },
                  "scope": 2108,
                  "src": "597:57:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3245,
              "src": "423:233:6"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 2110,
                    "name": "BoringOwnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "1118:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnable_$271",
                      "typeString": "contract BoringOwnable"
                    }
                  },
                  "id": 2111,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1118:13:6"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 2112,
                    "name": "BoringBatchable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 145,
                    "src": "1133:15:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringBatchable_$145",
                      "typeString": "contract BoringBatchable"
                    }
                  },
                  "id": 2113,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1133:15:6"
                }
              ],
              "contractDependencies": [
                110,
                145,
                152,
                271
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 2109,
                "nodeType": "StructuredDocumentation",
                "src": "658:437:6",
                "text": "@dev The (older) MasterChef contract gives out a constant number of PICHI tokens per block.\n It is the only address with minting rights for PICHI.\n The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token\n that is deposited into the MasterChef V1 (MCV1) contract.\n The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives."
              },
              "fullyImplemented": true,
              "id": 3244,
              "linearizedBaseContracts": [
                3244,
                145,
                110,
                271,
                152
              ],
              "name": "MiniChefV2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 2116,
                  "libraryName": {
                    "contractScope": null,
                    "id": 2114,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "1161:10:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1155:29:6",
                  "typeName": {
                    "id": 2115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1176:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 2119,
                  "libraryName": {
                    "contractScope": null,
                    "id": 2117,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 751,
                    "src": "1195:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$751",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1189:32:6",
                  "typeName": {
                    "id": 2118,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "1213:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 2122,
                  "libraryName": {
                    "contractScope": null,
                    "id": 2120,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "1232:11:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1226:29:6",
                  "typeName": {
                    "contractScope": null,
                    "id": 2121,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "1248:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 2125,
                  "libraryName": {
                    "contractScope": null,
                    "id": 2123,
                    "name": "SignedSafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3518,
                    "src": "1266:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedSafeMath_$3518",
                      "typeString": "library SignedSafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1260:32:6",
                  "typeName": {
                    "id": 2124,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1285:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                },
                {
                  "canonicalName": "MiniChefV2.UserInfo",
                  "id": 2130,
                  "members": [
                    {
                      "constant": false,
                      "id": 2127,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2130,
                      "src": "1480:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2126,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1480:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2129,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2130,
                      "src": "1504:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 2128,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1504:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 3244,
                  "src": "1454:74:6",
                  "visibility": "public"
                },
                {
                  "canonicalName": "MiniChefV2.PoolInfo",
                  "id": 2137,
                  "members": [
                    {
                      "constant": false,
                      "id": 2132,
                      "mutability": "mutable",
                      "name": "accPichiPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2137,
                      "src": "1739:24:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 2131,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1739:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2134,
                      "mutability": "mutable",
                      "name": "lastRewardTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2137,
                      "src": "1773:21:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 2133,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1773:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2136,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2137,
                      "src": "1804:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 2135,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1804:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 3244,
                  "src": "1713:115:6",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2138,
                    "nodeType": "StructuredDocumentation",
                    "src": "1834:35:6",
                    "text": "@dev Address of PICHI contract."
                  },
                  "functionSelector": "e7d77cba",
                  "id": 2140,
                  "mutability": "immutable",
                  "name": "PICHI",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "1874:29:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2139,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "1874:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7cd07e47",
                  "id": 2142,
                  "mutability": "mutable",
                  "name": "migrator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2011:29:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                    "typeString": "contract IMigratorChef"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2141,
                    "name": "IMigratorChef",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2108,
                    "src": "2011:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                      "typeString": "contract IMigratorChef"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2143,
                    "nodeType": "StructuredDocumentation",
                    "src": "2047:32:6",
                    "text": "@dev Info of each MCV2 pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 2146,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2084:26:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                    "typeString": "struct MiniChefV2.PoolInfo[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 2144,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 2137,
                      "src": "2084:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                        "typeString": "struct MiniChefV2.PoolInfo"
                      }
                    },
                    "id": 2145,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2084:10:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage_ptr",
                      "typeString": "struct MiniChefV2.PoolInfo[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2147,
                    "nodeType": "StructuredDocumentation",
                    "src": "2116:52:6",
                    "text": "@dev Address of the LP token for each MCV2 pool."
                  },
                  "functionSelector": "78ed5d1f",
                  "id": 2150,
                  "mutability": "mutable",
                  "name": "lpToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2173:23:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                    "typeString": "contract IERC20[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 2148,
                      "name": "IERC20",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 337,
                      "src": "2173:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$337",
                        "typeString": "contract IERC20"
                      }
                    },
                    "id": 2149,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2173:8:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                      "typeString": "contract IERC20[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2151,
                    "nodeType": "StructuredDocumentation",
                    "src": "2202:54:6",
                    "text": "@dev Address of each `IRewarder` contract in MCV2."
                  },
                  "functionSelector": "c346253d",
                  "id": 2154,
                  "mutability": "mutable",
                  "name": "rewarder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2261:27:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                    "typeString": "contract IRewarder[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 2152,
                      "name": "IRewarder",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3320,
                      "src": "2261:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IRewarder_$3320",
                        "typeString": "contract IRewarder"
                      }
                    },
                    "id": 2153,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2261:11:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage_ptr",
                      "typeString": "contract IRewarder[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2155,
                    "nodeType": "StructuredDocumentation",
                    "src": "2295:49:6",
                    "text": "@dev Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 2161,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2349:66:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo))"
                  },
                  "typeName": {
                    "id": 2160,
                    "keyType": {
                      "id": 2156,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2358:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2349:50:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo))"
                    },
                    "valueType": {
                      "id": 2159,
                      "keyType": {
                        "id": 2157,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2378:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2369:29:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                        "typeString": "mapping(address => struct MiniChefV2.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 2158,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2130,
                        "src": "2389:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                          "typeString": "struct MiniChefV2.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2162,
                    "nodeType": "StructuredDocumentation",
                    "src": "2421:88:6",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "functionSelector": "17caf6f1",
                  "id": 2164,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2514:30:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2163,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2514:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "58b84f4d",
                  "id": 2166,
                  "mutability": "mutable",
                  "name": "pichiPerSecond",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2551:29:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2165,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2551:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 2169,
                  "mutability": "constant",
                  "name": "ACC_PICHI_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2586:51:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2167,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2586:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 2168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2633:4:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2179,
                  "name": "Deposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2171,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2179,
                        "src": "2658:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2170,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2658:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2173,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2179,
                        "src": "2680:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2172,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2680:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2175,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2179,
                        "src": "2701:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2701:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2177,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2179,
                        "src": "2717:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2176,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2717:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2657:79:6"
                  },
                  "src": "2644:93:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2189,
                  "name": "Withdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2181,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2189,
                        "src": "2757:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2757:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2183,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2189,
                        "src": "2779:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2779:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2185,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2189,
                        "src": "2800:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2800:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2187,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2189,
                        "src": "2816:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2816:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2756:79:6"
                  },
                  "src": "2742:94:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2199,
                  "name": "EmergencyWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2191,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2199,
                        "src": "2865:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2190,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2865:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2193,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2199,
                        "src": "2887:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2887:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2195,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2199,
                        "src": "2908:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2908:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2197,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2199,
                        "src": "2924:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2196,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2924:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2864:79:6"
                  },
                  "src": "2841:103:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2207,
                  "name": "Harvest",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2201,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2207,
                        "src": "2963:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2200,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2963:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2203,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2207,
                        "src": "2985:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2985:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2205,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2207,
                        "src": "3006:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3006:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2962:59:6"
                  },
                  "src": "2949:73:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2217,
                  "name": "LogPoolAddition",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2209,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2217,
                        "src": "3049:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2208,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3049:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2211,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2217,
                        "src": "3070:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3070:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2213,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2217,
                        "src": "3090:22:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2212,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "3090:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2215,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2217,
                        "src": "3114:26:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2214,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "3114:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3048:93:6"
                  },
                  "src": "3027:115:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2227,
                  "name": "LogSetPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2219,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2227,
                        "src": "3164:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3164:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2221,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2227,
                        "src": "3185:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3185:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2223,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2227,
                        "src": "3205:26:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2222,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "3205:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2225,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2227,
                        "src": "3233:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2224,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3233:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3163:85:6"
                  },
                  "src": "3147:102:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2237,
                  "name": "LogUpdatePool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2229,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2237,
                        "src": "3274:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3274:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2231,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardTime",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2237,
                        "src": "3295:21:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2230,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3295:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2233,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2237,
                        "src": "3318:16:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2232,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3318:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2235,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accPichiPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2237,
                        "src": "3336:24:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2234,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3336:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3273:88:6"
                  },
                  "src": "3254:108:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2241,
                  "name": "LogPichiPerSecond",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2240,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2239,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "pichiPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2241,
                        "src": "3391:22:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3391:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3390:24:6"
                  },
                  "src": "3367:48:6"
                },
                {
                  "body": {
                    "id": 2251,
                    "nodeType": "Block",
                    "src": "3511:31:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2247,
                            "name": "PICHI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2140,
                            "src": "3521:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2248,
                            "name": "_pichi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2244,
                            "src": "3529:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3521:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 2250,
                        "nodeType": "ExpressionStatement",
                        "src": "3521:14:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2242,
                    "nodeType": "StructuredDocumentation",
                    "src": "3421:51:6",
                    "text": "@param _pichi The PICHI token contract address."
                  },
                  "id": 2252,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2244,
                        "mutability": "mutable",
                        "name": "_pichi",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2252,
                        "src": "3489:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2243,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "3489:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3488:15:6"
                  },
                  "returnParameters": {
                    "id": 2246,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3511:0:6"
                  },
                  "scope": 3244,
                  "src": "3477:65:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2263,
                    "nodeType": "Block",
                    "src": "3653:40:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2258,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2256,
                            "src": "3663:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2259,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2146,
                              "src": "3671:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 2260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3671:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3663:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2262,
                        "nodeType": "ExpressionStatement",
                        "src": "3663:23:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2253,
                    "nodeType": "StructuredDocumentation",
                    "src": "3548:42:6",
                    "text": "@dev Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 2264,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2254,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3614:2:6"
                  },
                  "returnParameters": {
                    "id": 2257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2256,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2264,
                        "src": "3638:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2255,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3638:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3637:15:6"
                  },
                  "scope": 3244,
                  "src": "3595:98:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2321,
                    "nodeType": "Block",
                    "src": "4110:392:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2276,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2164,
                            "src": "4120:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2279,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2267,
                                "src": "4158:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2277,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2164,
                                "src": "4138:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "4138:19:6",
                              "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": 2280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4138:31:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4120:49:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2282,
                        "nodeType": "ExpressionStatement",
                        "src": "4120:49:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2286,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2269,
                              "src": "4192:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2283,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2150,
                              "src": "4179:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 2285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4179:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IERC20_$337_$returns$__$",
                              "typeString": "function (contract IERC20)"
                            }
                          },
                          "id": 2287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4179:22:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2288,
                        "nodeType": "ExpressionStatement",
                        "src": "4179:22:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2292,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2271,
                              "src": "4225:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2289,
                              "name": "rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2154,
                              "src": "4211:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                "typeString": "contract IRewarder[] storage ref"
                              }
                            },
                            "id": 2291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4211:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IRewarder_$3320_$returns$__$",
                              "typeString": "function (contract IRewarder)"
                            }
                          },
                          "id": 2293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4211:24:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2294,
                        "nodeType": "ExpressionStatement",
                        "src": "4211:24:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2299,
                                      "name": "allocPoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2267,
                                      "src": "4295:10:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "4295:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 2301,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4295:17:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2302,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "4342:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 2303,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4342:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "4342:20:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 2305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4342:22:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4396:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2298,
                                "name": "PoolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2137,
                                "src": "4260:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_PoolInfo_$2137_storage_ptr_$",
                                  "typeString": "type(struct MiniChefV2.PoolInfo storage pointer)"
                                }
                              },
                              "id": 2307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "allocPoint",
                                "lastRewardTime",
                                "accPichiPerShare"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "4260:148:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2295,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2146,
                              "src": "4246:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 2297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4246:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_PoolInfo_$2137_storage_$returns$__$",
                              "typeString": "function (struct MiniChefV2.PoolInfo storage ref)"
                            }
                          },
                          "id": 2308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4246:163:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2309,
                        "nodeType": "ExpressionStatement",
                        "src": "4246:163:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4459:1:6",
                                  "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,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2311,
                                    "name": "lpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2150,
                                    "src": "4440:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                      "typeString": "contract IERC20[] storage ref"
                                    }
                                  },
                                  "id": 2312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4440:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 599,
                                "src": "4440:18:6",
                                "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": 2315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4440:21:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2316,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2267,
                              "src": "4463:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2317,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2269,
                              "src": "4475:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2318,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2271,
                              "src": "4485:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "id": 2310,
                            "name": "LogPoolAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2217,
                            "src": "4424:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$337_$_t_contract$_IRewarder_$3320_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IERC20,contract IRewarder)"
                            }
                          },
                          "id": 2319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4424:71:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2320,
                        "nodeType": "EmitStatement",
                        "src": "4419:76:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2265,
                    "nodeType": "StructuredDocumentation",
                    "src": "3699:318:6",
                    "text": "@dev Add a new LP to the pool. Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _lpToken Address of the LP ERC-20 token.\n @param _rewarder Address of the rewarder delegate."
                  },
                  "functionSelector": "ab7de098",
                  "id": 2322,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2274,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2273,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "4100:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4100:9:6"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2267,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2322,
                        "src": "4035:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4035:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2269,
                        "mutability": "mutable",
                        "name": "_lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2322,
                        "src": "4055:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2268,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "4055:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2271,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2322,
                        "src": "4072:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2270,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "4072:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4034:58:6"
                  },
                  "returnParameters": {
                    "id": 2275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4110:0:6"
                  },
                  "scope": 3244,
                  "src": "4022:480:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2379,
                    "nodeType": "Block",
                    "src": "4988:304:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2336,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2164,
                            "src": "4998:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2345,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2327,
                                "src": "5067:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2339,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2146,
                                        "src": "5036:8:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                          "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                                        }
                                      },
                                      "id": 2341,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 2340,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2325,
                                        "src": "5045:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5036:14:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                                        "typeString": "struct MiniChefV2.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 2342,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2136,
                                    "src": "5036:25:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2337,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2164,
                                    "src": "5016:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "5016:19:6",
                                  "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": 2343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5016:46:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "5016:50:6",
                              "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": 2346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5016:63:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4998:81:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2348,
                        "nodeType": "ExpressionStatement",
                        "src": "4998:81:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2349,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2146,
                                "src": "5089:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                  "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                                }
                              },
                              "id": 2351,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2350,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2325,
                                "src": "5098:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5089:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                                "typeString": "struct MiniChefV2.PoolInfo storage ref"
                              }
                            },
                            "id": 2352,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2136,
                            "src": "5089:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2353,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2327,
                                "src": "5117:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 679,
                              "src": "5117:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 2355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5117:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "5089:46:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 2357,
                        "nodeType": "ExpressionStatement",
                        "src": "5089:46:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 2358,
                          "name": "overwrite",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2331,
                          "src": "5149:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2366,
                        "nodeType": "IfStatement",
                        "src": "5145:46:6",
                        "trueBody": {
                          "id": 2365,
                          "nodeType": "Block",
                          "src": "5160:31:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2359,
                                    "name": "rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2154,
                                    "src": "5162:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                      "typeString": "contract IRewarder[] storage ref"
                                    }
                                  },
                                  "id": 2361,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2360,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2325,
                                    "src": "5171:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5162:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$3320",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2362,
                                  "name": "_rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2329,
                                  "src": "5179:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$3320",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "src": "5162:26:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 2364,
                              "nodeType": "ExpressionStatement",
                              "src": "5162:26:6"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2368,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2325,
                              "src": "5216:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2369,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2327,
                              "src": "5222:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 2370,
                                "name": "overwrite",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2331,
                                "src": "5235:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2372,
                                  "name": "rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2154,
                                  "src": "5259:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                    "typeString": "contract IRewarder[] storage ref"
                                  }
                                },
                                "id": 2374,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2373,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2325,
                                  "src": "5268:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5259:14:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 2375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "5235:38:6",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 2371,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2329,
                                "src": "5247:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2376,
                              "name": "overwrite",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2331,
                              "src": "5275:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2367,
                            "name": "LogSetPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2227,
                            "src": "5205:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IRewarder_$3320_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IRewarder,bool)"
                            }
                          },
                          "id": 2377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5205:80:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2378,
                        "nodeType": "EmitStatement",
                        "src": "5200:85:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2323,
                    "nodeType": "StructuredDocumentation",
                    "src": "4508:373:6",
                    "text": "@dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool.\n @param _rewarder Address of the rewarder delegate.\n @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                  },
                  "functionSelector": "88bba42f",
                  "id": 2380,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2334,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2333,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "4978:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4978:9:6"
                    }
                  ],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2325,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2380,
                        "src": "4899:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4899:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2327,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2380,
                        "src": "4913:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4913:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2329,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2380,
                        "src": "4934:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2328,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "4934:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2331,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2380,
                        "src": "4955:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2330,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4955:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4898:72:6"
                  },
                  "returnParameters": {
                    "id": 2335,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4988:0:6"
                  },
                  "scope": 3244,
                  "src": "4886:406:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2396,
                    "nodeType": "Block",
                    "src": "5539:98:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2388,
                            "name": "pichiPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2166,
                            "src": "5549:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2389,
                            "name": "_pichiPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2383,
                            "src": "5566:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5549:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2391,
                        "nodeType": "ExpressionStatement",
                        "src": "5549:32:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2393,
                              "name": "_pichiPerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2383,
                              "src": "5614:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2392,
                            "name": "LogPichiPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2241,
                            "src": "5596:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5596:34:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2395,
                        "nodeType": "EmitStatement",
                        "src": "5591:39:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2381,
                    "nodeType": "StructuredDocumentation",
                    "src": "5298:167:6",
                    "text": "@dev Sets the pichi per second to be distributed. Can only be called by the owner.\n @param _pichiPerSecond The amount of Pichi to be distributed per second."
                  },
                  "functionSelector": "033ce5c1",
                  "id": 2397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2386,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2385,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5529:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5529:9:6"
                    }
                  ],
                  "name": "setPichiPerSecond",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2383,
                        "mutability": "mutable",
                        "name": "_pichiPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2397,
                        "src": "5497:23:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2382,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5497:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5496:25:6"
                  },
                  "returnParameters": {
                    "id": 2387,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5539:0:6"
                  },
                  "scope": 3244,
                  "src": "5470:167:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2409,
                    "nodeType": "Block",
                    "src": "5835:37:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2405,
                            "name": "migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2142,
                            "src": "5845:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                              "typeString": "contract IMigratorChef"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2406,
                            "name": "_migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2400,
                            "src": "5856:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                              "typeString": "contract IMigratorChef"
                            }
                          },
                          "src": "5845:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                            "typeString": "contract IMigratorChef"
                          }
                        },
                        "id": 2408,
                        "nodeType": "ExpressionStatement",
                        "src": "5845:20:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2398,
                    "nodeType": "StructuredDocumentation",
                    "src": "5643:124:6",
                    "text": "@dev Set the `migrator` contract. Can only be called by the owner.\n @param _migrator The contract address to set."
                  },
                  "functionSelector": "23cf3118",
                  "id": 2410,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2403,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2402,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5825:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5825:9:6"
                    }
                  ],
                  "name": "setMigrator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2400,
                        "mutability": "mutable",
                        "name": "_migrator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2410,
                        "src": "5793:23:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                          "typeString": "contract IMigratorChef"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2399,
                          "name": "IMigratorChef",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 2108,
                          "src": "5793:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                            "typeString": "contract IMigratorChef"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5792:25:6"
                  },
                  "returnParameters": {
                    "id": 2404,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5835:0:6"
                  },
                  "scope": 3244,
                  "src": "5772:100:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2481,
                    "nodeType": "Block",
                    "src": "6061:436:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2419,
                                    "name": "migrator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2142,
                                    "src": "6087:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                                      "typeString": "contract IMigratorChef"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                                      "typeString": "contract IMigratorChef"
                                    }
                                  ],
                                  "id": 2418,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6079:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2417,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6079:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6079:17:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2423,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6108:1:6",
                                    "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": 2422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6100:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2421,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6100:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6100:10:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6079:31:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d61737465724368656656323a206e6f206d69677261746f7220736574",
                              "id": 2426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6112:31:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db733e5612b6ea507bf1315a9949f7b2f36477c7d6bedf5cbd0acae80e12dfdf",
                                "typeString": "literal_string \"MasterChefV2: no migrator set\""
                              },
                              "value": "MasterChefV2: no migrator set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db733e5612b6ea507bf1315a9949f7b2f36477c7d6bedf5cbd0acae80e12dfdf",
                                "typeString": "literal_string \"MasterChefV2: no migrator set\""
                              }
                            ],
                            "id": 2416,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6071:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6071:73:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2428,
                        "nodeType": "ExpressionStatement",
                        "src": "6071:73:6"
                      },
                      {
                        "assignments": [
                          2430
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2430,
                            "mutability": "mutable",
                            "name": "_lpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2481,
                            "src": "6154:15:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2429,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 337,
                              "src": "6154:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2434,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2431,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2150,
                            "src": "6172:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                              "typeString": "contract IERC20[] storage ref"
                            }
                          },
                          "id": 2433,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2432,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2413,
                            "src": "6180:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6172:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6154:31:6"
                      },
                      {
                        "assignments": [
                          2436
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2436,
                            "mutability": "mutable",
                            "name": "bal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2481,
                            "src": "6195:11:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2435,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6195:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2444,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2441,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6236:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 2440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6228:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2439,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6228:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6228:13:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2437,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "6209:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "6209:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6209:33:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6195:47:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2450,
                                  "name": "migrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2142,
                                  "src": "6277:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                                    "typeString": "contract IMigratorChef"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                                    "typeString": "contract IMigratorChef"
                                  }
                                ],
                                "id": 2449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6269:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2448,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6269:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6269:17:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2452,
                              "name": "bal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "6288:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2445,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "6252:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 303,
                            "src": "6252:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6252:40:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2454,
                        "nodeType": "ExpressionStatement",
                        "src": "6252:40:6"
                      },
                      {
                        "assignments": [
                          2456
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2456,
                            "mutability": "mutable",
                            "name": "newLpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2481,
                            "src": "6302:17:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2455,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 337,
                              "src": "6302:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2461,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2459,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "6339:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2457,
                              "name": "migrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2142,
                              "src": "6322:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMigratorChef_$2108",
                                "typeString": "contract IMigratorChef"
                              }
                            },
                            "id": 2458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "migrate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2107,
                            "src": "6322:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$337_$returns$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20) external returns (contract IERC20)"
                            }
                          },
                          "id": 2460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6322:26:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6302:46:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2463,
                                "name": "bal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2436,
                                "src": "6366:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2468,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "6402:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                          "typeString": "contract MiniChefV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                          "typeString": "contract MiniChefV2"
                                        }
                                      ],
                                      "id": 2467,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6394:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2466,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6394:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6394:13:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2464,
                                    "name": "newLpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2456,
                                    "src": "6373:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2465,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "6373:20:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6373:35:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6366:42:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d61737465724368656656323a206d696772617465642062616c616e6365206d757374206d61746368",
                              "id": 2472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6410:43:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_52b373b8abd140702e448133a0dd7129935d941acfcf9ee8942c32166eb56caf",
                                "typeString": "literal_string \"MasterChefV2: migrated balance must match\""
                              },
                              "value": "MasterChefV2: migrated balance must match"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_52b373b8abd140702e448133a0dd7129935d941acfcf9ee8942c32166eb56caf",
                                "typeString": "literal_string \"MasterChefV2: migrated balance must match\""
                              }
                            ],
                            "id": 2462,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6358:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6358:96:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2474,
                        "nodeType": "ExpressionStatement",
                        "src": "6358:96:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2475,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2150,
                              "src": "6464:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 2477,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2476,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2413,
                              "src": "6472:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6464:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2478,
                            "name": "newLpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2456,
                            "src": "6480:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6464:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 2480,
                        "nodeType": "ExpressionStatement",
                        "src": "6464:26:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2411,
                    "nodeType": "StructuredDocumentation",
                    "src": "5878:140:6",
                    "text": "@dev Migrate LP token to another LP contract through the `migrator` contract.\n @param _pid The index of the pool. See `poolInfo`."
                  },
                  "functionSelector": "454b0608",
                  "id": 2482,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2413,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2482,
                        "src": "6040:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2412,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6040:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6039:14:6"
                  },
                  "returnParameters": {
                    "id": 2415,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6061:0:6"
                  },
                  "scope": 3244,
                  "src": "6023:474:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2587,
                    "nodeType": "Block",
                    "src": "6807:700:6",
                    "statements": [
                      {
                        "assignments": [
                          2493
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2493,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2587,
                            "src": "6817:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2492,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "6817:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2497,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2494,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2146,
                            "src": "6840:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                              "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 2496,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2495,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2485,
                            "src": "6849:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6840:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                            "typeString": "struct MiniChefV2.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6817:37:6"
                      },
                      {
                        "assignments": [
                          2499
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2499,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2587,
                            "src": "6864:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2498,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "6864:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2505,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2500,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "6888:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2502,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2501,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2485,
                              "src": "6897:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6888:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2504,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2503,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2487,
                            "src": "6903:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6888:21:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6864:45:6"
                      },
                      {
                        "assignments": [
                          2507
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2507,
                            "mutability": "mutable",
                            "name": "accPichiPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2587,
                            "src": "6919:24:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2506,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6919:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2510,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2508,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2493,
                            "src": "6946:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo memory"
                            }
                          },
                          "id": 2509,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accPichiPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2132,
                          "src": "6946:21:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6919:48:6"
                      },
                      {
                        "assignments": [
                          2512
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2512,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2587,
                            "src": "6977:16:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2511,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6977:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2522,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2519,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7028:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 2518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7020:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2517,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7020:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7020:13:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2513,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "6996:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2515,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2514,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2485,
                                "src": "7004:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6996:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "6996:23:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6996:38:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6977:57:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2523,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "7048:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7048:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2525,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2493,
                                "src": "7066:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                  "typeString": "struct MiniChefV2.PoolInfo memory"
                                }
                              },
                              "id": 2526,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardTime",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2134,
                              "src": "7066:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "7048:37:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2528,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2512,
                              "src": "7089:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7101:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "7089:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7048:54:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2567,
                        "nodeType": "IfStatement",
                        "src": "7044:341:6",
                        "trueBody": {
                          "id": 2566,
                          "nodeType": "Block",
                          "src": "7104:281:6",
                          "statements": [
                            {
                              "assignments": [
                                2533
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2533,
                                  "mutability": "mutable",
                                  "name": "time",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2566,
                                  "src": "7118:12:6",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2532,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7118:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2540,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2537,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2493,
                                      "src": "7153:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 2538,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2134,
                                    "src": "7153:19:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2534,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "7133:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 2535,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7133:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "7133:19:6",
                                  "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": 2539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7133:40:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7118:55:6"
                            },
                            {
                              "assignments": [
                                2542
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2542,
                                  "mutability": "mutable",
                                  "name": "pichiReward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2566,
                                  "src": "7187:19:6",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2541,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7187:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2553,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2548,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2493,
                                        "src": "7238:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                          "typeString": "struct MiniChefV2.PoolInfo memory"
                                        }
                                      },
                                      "id": 2549,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2136,
                                      "src": "7238:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2545,
                                          "name": "pichiPerSecond",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2166,
                                          "src": "7218:14:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2543,
                                          "name": "time",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2533,
                                          "src": "7209:4:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2544,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "7209:8:6",
                                        "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": 2546,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7209:24:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 627,
                                    "src": "7209:28:6",
                                    "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": 2550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7209:45:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2551,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2164,
                                  "src": "7257:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7209:63:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7187:85:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2554,
                                  "name": "accPichiPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2507,
                                  "src": "7286:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2562,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 2559,
                                            "name": "ACC_PICHI_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2169,
                                            "src": "7342:19:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2557,
                                            "name": "pichiReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2542,
                                            "src": "7326:11:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2558,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "7326:15:6",
                                          "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": 2560,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7326:36:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2561,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2512,
                                        "src": "7365:8:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7326:47:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2555,
                                      "name": "accPichiPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2507,
                                      "src": "7305:16:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2556,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 577,
                                    "src": "7305:20:6",
                                    "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": 2563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7305:69:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7286:88:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2565,
                              "nodeType": "ExpressionStatement",
                              "src": "7286:88:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2568,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2490,
                            "src": "7394:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2580,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2499,
                                      "src": "7472:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2581,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "rewardDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2129,
                                    "src": "7472:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2577,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2574,
                                              "name": "accPichiPerShare",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2507,
                                              "src": "7427:16:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2571,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2499,
                                                "src": "7411:4:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                                  "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                                }
                                              },
                                              "id": 2572,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2127,
                                              "src": "7411:11:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 2573,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 627,
                                            "src": "7411:15:6",
                                            "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": 2575,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7411:33:6",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2576,
                                          "name": "ACC_PICHI_PRECISION",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2169,
                                          "src": "7447:19:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7411:55:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2570,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7404:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 2569,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7404:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2578,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7404:63:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "id": 2579,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3457,
                                  "src": "7404:67:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                    "typeString": "function (int256,int256) pure returns (int256)"
                                  }
                                },
                                "id": 2582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7404:84:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 2583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toUInt256",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3517,
                              "src": "7404:94:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                                "typeString": "function (int256) pure returns (uint256)"
                              }
                            },
                            "id": 2584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7404:96:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7394:106:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2586,
                        "nodeType": "ExpressionStatement",
                        "src": "7394:106:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2483,
                    "nodeType": "StructuredDocumentation",
                    "src": "6503:208:6",
                    "text": "@dev View function to see pending PICHI on frontend.\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending PICHI reward for a given user."
                  },
                  "functionSelector": "86f227f5",
                  "id": 2588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingPichi",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2485,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2588,
                        "src": "6738:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6738:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2487,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2588,
                        "src": "6752:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2486,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6752:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6737:29:6"
                  },
                  "returnParameters": {
                    "id": 2491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2490,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2588,
                        "src": "6790:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6790:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6789:17:6"
                  },
                  "scope": 3244,
                  "src": "6716:791:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2618,
                    "nodeType": "Block",
                    "src": "7741:129:6",
                    "statements": [
                      {
                        "assignments": [
                          2596
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2596,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2618,
                            "src": "7751:11:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2595,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7751:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2599,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2597,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2592,
                            "src": "7765:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7765:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7751:25:6"
                      },
                      {
                        "body": {
                          "id": 2616,
                          "nodeType": "Block",
                          "src": "7820:44:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2611,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2592,
                                      "src": "7845:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 2613,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2612,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2601,
                                      "src": "7850:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7845:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2610,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2722,
                                  "src": "7834:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                                  }
                                },
                                "id": 2614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7834:19:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                  "typeString": "struct MiniChefV2.PoolInfo memory"
                                }
                              },
                              "id": 2615,
                              "nodeType": "ExpressionStatement",
                              "src": "7834:19:6"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2604,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2601,
                            "src": "7806:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2605,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2596,
                            "src": "7810:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7806:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2617,
                        "initializationExpression": {
                          "assignments": [
                            2601
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2601,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2617,
                              "src": "7791:9:6",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2600,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7791:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2603,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7803:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7791:13:6"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "7815:3:6",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2607,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2601,
                              "src": "7817:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2609,
                          "nodeType": "ExpressionStatement",
                          "src": "7815:3:6"
                        },
                        "nodeType": "ForStatement",
                        "src": "7786:78:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2589,
                    "nodeType": "StructuredDocumentation",
                    "src": "7513:164:6",
                    "text": "@dev Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 2619,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2592,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2619,
                        "src": "7707:23:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2590,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7707:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2591,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7707:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7706:25:6"
                  },
                  "returnParameters": {
                    "id": 2594,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7741:0:6"
                  },
                  "scope": 3244,
                  "src": "7682:188:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2721,
                    "nodeType": "Block",
                    "src": "8117:701:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2627,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "8127:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2628,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2146,
                              "src": "8134:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 2630,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2629,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2622,
                              "src": "8143:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8134:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                              "typeString": "struct MiniChefV2.PoolInfo storage ref"
                            }
                          },
                          "src": "8127:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "id": 2632,
                        "nodeType": "ExpressionStatement",
                        "src": "8127:20:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2633,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "8161:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8161:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2635,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2625,
                              "src": "8179:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo memory"
                              }
                            },
                            "id": 2636,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2134,
                            "src": "8179:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "8161:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2720,
                        "nodeType": "IfStatement",
                        "src": "8157:655:6",
                        "trueBody": {
                          "id": 2719,
                          "nodeType": "Block",
                          "src": "8200:612:6",
                          "statements": [
                            {
                              "assignments": [
                                2639
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2639,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2719,
                                  "src": "8214:16:6",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2638,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8214:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2649,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2646,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "8264:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                          "typeString": "contract MiniChefV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                          "typeString": "contract MiniChefV2"
                                        }
                                      ],
                                      "id": 2645,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8256:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2644,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8256:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2647,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8256:13:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2640,
                                      "name": "lpToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2150,
                                      "src": "8233:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                        "typeString": "contract IERC20[] storage ref"
                                      }
                                    },
                                    "id": 2642,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2641,
                                      "name": "pid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2622,
                                      "src": "8241:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8233:12:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2643,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "8233:22:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8233:37:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8214:56:6"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2650,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2639,
                                  "src": "8288:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2651,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8299:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8288:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2694,
                              "nodeType": "IfStatement",
                              "src": "8284:335:6",
                              "trueBody": {
                                "id": 2693,
                                "nodeType": "Block",
                                "src": "8302:317:6",
                                "statements": [
                                  {
                                    "assignments": [
                                      2654
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2654,
                                        "mutability": "mutable",
                                        "name": "time",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 2693,
                                        "src": "8320:12:6",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2653,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8320:7:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2661,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2658,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2625,
                                            "src": "8355:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                              "typeString": "struct MiniChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 2659,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lastRewardTime",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2134,
                                          "src": "8355:19:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2655,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "8335:5:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 2656,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "8335:15:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2657,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 599,
                                        "src": "8335:19:6",
                                        "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": 2660,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8335:40:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8320:55:6"
                                  },
                                  {
                                    "assignments": [
                                      2663
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2663,
                                        "mutability": "mutable",
                                        "name": "pichiReward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 2693,
                                        "src": "8393:19:6",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2662,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8393:7:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2674,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2673,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2669,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2625,
                                              "src": "8444:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                                "typeString": "struct MiniChefV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 2670,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2136,
                                            "src": "8444:15:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2666,
                                                "name": "pichiPerSecond",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2166,
                                                "src": "8424:14:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2664,
                                                "name": "time",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2654,
                                                "src": "8415:4:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2665,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "8415:8:6",
                                              "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": 2667,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "8415:24:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2668,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "8415:28:6",
                                          "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": 2671,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8415:45:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2672,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2164,
                                        "src": "8463:15:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8415:63:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8393:85:6"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2675,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2625,
                                          "src": "8496:4:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                            "typeString": "struct MiniChefV2.PoolInfo memory"
                                          }
                                        },
                                        "id": 2677,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accPichiPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2132,
                                        "src": "8496:21:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 2686,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 2683,
                                                          "name": "ACC_PICHI_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 2169,
                                                          "src": "8563:19:6",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 2681,
                                                          "name": "pichiReward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 2663,
                                                          "src": "8547:11:6",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 2682,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 627,
                                                        "src": "8547:15:6",
                                                        "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": 2684,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "8547:36:6",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 2685,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2639,
                                                      "src": "8586:8:6",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "8547:47:6",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 2687,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "8546:49:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2688,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 653,
                                              "src": "8546:55:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 2689,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "8546:57:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2678,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2625,
                                              "src": "8520:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                                "typeString": "struct MiniChefV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 2679,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accPichiPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2132,
                                            "src": "8520:21:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 2680,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 728,
                                          "src": "8520:25:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 2690,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8520:84:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "8496:108:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 2692,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8496:108:6"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2695,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2625,
                                    "src": "8632:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                      "typeString": "struct MiniChefV2.PoolInfo memory"
                                    }
                                  },
                                  "id": 2697,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2134,
                                  "src": "8632:19:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2698,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "8654:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 2699,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8654:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2700,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "8654:20:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 2701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8654:22:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "8632:44:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 2703,
                              "nodeType": "ExpressionStatement",
                              "src": "8632:44:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2704,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2146,
                                    "src": "8690:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                      "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                                    }
                                  },
                                  "id": 2706,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2705,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2622,
                                    "src": "8699:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8690:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                                    "typeString": "struct MiniChefV2.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2707,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2625,
                                  "src": "8706:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                    "typeString": "struct MiniChefV2.PoolInfo memory"
                                  }
                                },
                                "src": "8690:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                                  "typeString": "struct MiniChefV2.PoolInfo storage ref"
                                }
                              },
                              "id": 2709,
                              "nodeType": "ExpressionStatement",
                              "src": "8690:20:6"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2711,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2622,
                                    "src": "8743:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2712,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2625,
                                      "src": "8748:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 2713,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2134,
                                    "src": "8748:19:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2714,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2639,
                                    "src": "8769:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2715,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2625,
                                      "src": "8779:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 2716,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accPichiPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2132,
                                    "src": "8779:21:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 2710,
                                  "name": "LogUpdatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2237,
                                  "src": "8729:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 2717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8729:72:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2718,
                              "nodeType": "EmitStatement",
                              "src": "8724:77:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2620,
                    "nodeType": "StructuredDocumentation",
                    "src": "7876:165:6",
                    "text": "@dev Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 2722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2622,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2722,
                        "src": "8066:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8066:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8065:13:6"
                  },
                  "returnParameters": {
                    "id": 2626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2625,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2722,
                        "src": "8095:20:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                          "typeString": "struct MiniChefV2.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2624,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 2137,
                          "src": "8095:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8094:22:6"
                  },
                  "scope": 3244,
                  "src": "8046:772:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2824,
                    "nodeType": "Block",
                    "src": "9118:606:6",
                    "statements": [
                      {
                        "assignments": [
                          2733
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2733,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2824,
                            "src": "9128:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2732,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "9128:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2737,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2735,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2725,
                              "src": "9162:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2734,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2722,
                            "src": "9151:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 2736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9151:15:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9128:38:6"
                      },
                      {
                        "assignments": [
                          2739
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2739,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2824,
                            "src": "9176:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2738,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "9176:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2745,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2740,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "9200:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2742,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2741,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2725,
                              "src": "9209:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9200:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2744,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2743,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2729,
                            "src": "9214:2:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9200:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9176:41:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2746,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2739,
                              "src": "9247:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2748,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2127,
                            "src": "9247:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2752,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2727,
                                "src": "9277:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2749,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2739,
                                  "src": "9261:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 2750,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2127,
                                "src": "9261:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "9261:15:6",
                              "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": 2753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9261:23:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9247:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2755,
                        "nodeType": "ExpressionStatement",
                        "src": "9247:37:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2756,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2739,
                              "src": "9294:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2758,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "9294:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2766,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2733,
                                            "src": "9350:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                              "typeString": "struct MiniChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 2767,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accPichiPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2132,
                                          "src": "9350:21:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2764,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2727,
                                          "src": "9339:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2765,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "9339:10:6",
                                        "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": 2768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9339:33:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2769,
                                      "name": "ACC_PICHI_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2169,
                                      "src": "9375:19:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9339:55:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2763,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9332:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 2762,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9332:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9332:63:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2759,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2739,
                                  "src": "9312:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 2760,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2129,
                                "src": "9312:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 2761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3497,
                              "src": "9312:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 2772,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9312:84:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "9294:102:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2774,
                        "nodeType": "ExpressionStatement",
                        "src": "9294:102:6"
                      },
                      {
                        "assignments": [
                          2776
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2776,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2824,
                            "src": "9431:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2775,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "9431:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2780,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2777,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "9453:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2779,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2778,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2725,
                            "src": "9462:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9453:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9431:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2783,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2776,
                                "src": "9488:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9480:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2781,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9480:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9480:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9510:1:6",
                                "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": 2786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9502:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2785,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9502:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9502:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "9480:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2802,
                        "nodeType": "IfStatement",
                        "src": "9476:115:6",
                        "trueBody": {
                          "id": 2801,
                          "nodeType": "Block",
                          "src": "9514:77:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2793,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2725,
                                    "src": "9552:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2794,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2729,
                                    "src": "9557:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2795,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2729,
                                    "src": "9561:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9565:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2797,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2739,
                                      "src": "9568:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2798,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "9568:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2790,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2776,
                                    "src": "9528:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 2792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "9528:23:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 2799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9528:52:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2800,
                              "nodeType": "ExpressionStatement",
                              "src": "9528:52:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2807,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9631:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9631:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2811,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "9651:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$3244",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 2810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9643:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2809,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9643:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9643:13:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2813,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2727,
                              "src": "9658:6:6",
                              "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,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2803,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "9601:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2805,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2804,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2725,
                                "src": "9609:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9601:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 552,
                            "src": "9601:29:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 2814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9601:64:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2815,
                        "nodeType": "ExpressionStatement",
                        "src": "9601:64:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2817,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9689:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9689:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2819,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2725,
                              "src": "9701:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2820,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2727,
                              "src": "9706:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2821,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2729,
                              "src": "9714:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2816,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2179,
                            "src": "9681:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 2822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9681:36:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2823,
                        "nodeType": "EmitStatement",
                        "src": "9676:41:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2723,
                    "nodeType": "StructuredDocumentation",
                    "src": "8824:224:6",
                    "text": "@dev Deposit LP tokens to MCV2 for PICHI allocation.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to deposit.\n @param to The receiver of `amount` deposit benefit."
                  },
                  "functionSelector": "8dbdbe6d",
                  "id": 2825,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2725,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2825,
                        "src": "9070:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9070:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2727,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2825,
                        "src": "9083:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2726,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9083:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2729,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2825,
                        "src": "9099:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2728,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9099:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9069:41:6"
                  },
                  "returnParameters": {
                    "id": 2731,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9118:0:6"
                  },
                  "scope": 3244,
                  "src": "9053:671:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2924,
                    "nodeType": "Block",
                    "src": "9993:604:6",
                    "statements": [
                      {
                        "assignments": [
                          2836
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2836,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2924,
                            "src": "10003:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2835,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "10003:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2840,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2838,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2828,
                              "src": "10037:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2837,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2722,
                            "src": "10026:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 2839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10026:15:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10003:38:6"
                      },
                      {
                        "assignments": [
                          2842
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2842,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2924,
                            "src": "10051:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2841,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "10051:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2849,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2843,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "10075:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2845,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2844,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2828,
                              "src": "10084:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10075:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2848,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2846,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "10089:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10089:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10075:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10051:49:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2850,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2842,
                              "src": "10130:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2852,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "10130:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2864,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2860,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2836,
                                            "src": "10186:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                              "typeString": "struct MiniChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 2861,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accPichiPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2132,
                                          "src": "10186:21:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2858,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2830,
                                          "src": "10175:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2859,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "10175:10:6",
                                        "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": 2862,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10175:33:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2863,
                                      "name": "ACC_PICHI_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2169,
                                      "src": "10211:19:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10175:55:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10168:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 2856,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10168:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10168:63:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2853,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2842,
                                  "src": "10148:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 2854,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2129,
                                "src": "10148:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 2855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3457,
                              "src": "10148:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 2866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10148:84:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "10130:102:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2868,
                        "nodeType": "ExpressionStatement",
                        "src": "10130:102:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2869,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2842,
                              "src": "10242:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2871,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2127,
                            "src": "10242:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2875,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2830,
                                "src": "10272:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2872,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2842,
                                  "src": "10256:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 2873,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2127,
                                "src": "10256:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "10256:15:6",
                              "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": 2876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10256:23:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10242:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2878,
                        "nodeType": "ExpressionStatement",
                        "src": "10242:37:6"
                      },
                      {
                        "assignments": [
                          2880
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2880,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2924,
                            "src": "10314:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2879,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "10314:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2884,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2881,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "10336:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2883,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2882,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2828,
                            "src": "10345:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10336:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10314:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2887,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2880,
                                "src": "10371:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10363:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2885,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10363:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10363:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10393:1:6",
                                "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": 2890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10385:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2889,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10385:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10385:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10363:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2907,
                        "nodeType": "IfStatement",
                        "src": "10359:123:6",
                        "trueBody": {
                          "id": 2906,
                          "nodeType": "Block",
                          "src": "10397:85:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2897,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2828,
                                    "src": "10435:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2898,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "10440:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "10440:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2900,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2832,
                                    "src": "10452:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10456:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2902,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2842,
                                      "src": "10459:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2903,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "10459:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2894,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2880,
                                    "src": "10411:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 2896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "10411:23:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 2904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10411:60:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2905,
                              "nodeType": "ExpressionStatement",
                              "src": "10411:60:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2912,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2832,
                              "src": "10526:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2913,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2830,
                              "src": "10530:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2908,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "10500:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2910,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2909,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2828,
                                "src": "10508:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10500:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "10500:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10500:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2915,
                        "nodeType": "ExpressionStatement",
                        "src": "10500:37:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2917,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10562:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10562:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2919,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2828,
                              "src": "10574:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2920,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2830,
                              "src": "10579:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2921,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2832,
                              "src": "10587:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2916,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2189,
                            "src": "10553:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 2922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10553:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2923,
                        "nodeType": "EmitStatement",
                        "src": "10548:42:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2826,
                    "nodeType": "StructuredDocumentation",
                    "src": "9730:192:6",
                    "text": "@dev Withdraw LP tokens from MCV2.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "0ad58d2f",
                  "id": 2925,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2828,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2925,
                        "src": "9945:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2827,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9945:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2830,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2925,
                        "src": "9958:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2829,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9958:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2832,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2925,
                        "src": "9974:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2831,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9974:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9944:41:6"
                  },
                  "returnParameters": {
                    "id": 2834,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9993:0:6"
                  },
                  "scope": 3244,
                  "src": "9927:670:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3026,
                    "nodeType": "Block",
                    "src": "10817:739:6",
                    "statements": [
                      {
                        "assignments": [
                          2934
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2934,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "10827:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2933,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "10827:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2938,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2936,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2928,
                              "src": "10861:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2935,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2722,
                            "src": "10850:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 2937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10850:15:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10827:38:6"
                      },
                      {
                        "assignments": [
                          2940
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2940,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "10875:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2939,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "10875:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2947,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2941,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "10899:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2943,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2942,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2928,
                              "src": "10908:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10899:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2946,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2944,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "10913:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10913:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10899:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10875:49:6"
                      },
                      {
                        "assignments": [
                          2949
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2949,
                            "mutability": "mutable",
                            "name": "accumulatedPichi",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "10934:23:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 2948,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10934:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2961,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2955,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2934,
                                      "src": "10983:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 2956,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accPichiPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2132,
                                    "src": "10983:21:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2952,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2940,
                                      "src": "10967:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2953,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "10967:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2954,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 627,
                                  "src": "10967:15:6",
                                  "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": 2957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10967:38:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2958,
                                "name": "ACC_PICHI_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2169,
                                "src": "11008:19:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10967:60:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10960:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 2950,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10960:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10960:68:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10934:94:6"
                      },
                      {
                        "assignments": [
                          2963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2963,
                            "mutability": "mutable",
                            "name": "_pendingPichi",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "11038:21:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2962,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11038:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2971,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2966,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2940,
                                    "src": "11083:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                      "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 2967,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2129,
                                  "src": "11083:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2964,
                                  "name": "accumulatedPichi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2949,
                                  "src": "11062:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 2965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3457,
                                "src": "11062:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 2968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11062:37:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 2969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3517,
                            "src": "11062:47:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 2970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11062:49:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11038:73:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2972,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2940,
                              "src": "11141:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2974,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "11141:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2975,
                            "name": "accumulatedPichi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2949,
                            "src": "11159:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "11141:34:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2977,
                        "nodeType": "ExpressionStatement",
                        "src": "11141:34:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2978,
                            "name": "_pendingPichi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2963,
                            "src": "11214:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11231:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11214:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2989,
                        "nodeType": "IfStatement",
                        "src": "11210:86:6",
                        "trueBody": {
                          "id": 2988,
                          "nodeType": "Block",
                          "src": "11234:62:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2984,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2930,
                                    "src": "11267:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2985,
                                    "name": "_pendingPichi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2963,
                                    "src": "11271:13:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2981,
                                    "name": "PICHI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2140,
                                    "src": "11248:5:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2983,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "11248:18:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 2986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11248:37:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2987,
                              "nodeType": "ExpressionStatement",
                              "src": "11248:37:6"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2991
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2991,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "11314:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2990,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "11314:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2995,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2992,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "11336:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2994,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2993,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2928,
                            "src": "11345:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11336:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11314:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2998,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2991,
                                "src": "11371:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11363:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2996,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11363:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11363:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11393:1:6",
                                "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": 3001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11385:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3000,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11385:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11385:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "11363:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3018,
                        "nodeType": "IfStatement",
                        "src": "11359:136:6",
                        "trueBody": {
                          "id": 3017,
                          "nodeType": "Block",
                          "src": "11397:98:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3008,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2928,
                                    "src": "11436:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3009,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "11441:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11441:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3011,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2930,
                                    "src": "11453:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3012,
                                    "name": "_pendingPichi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2963,
                                    "src": "11457:13:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3013,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2940,
                                      "src": "11472:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 3014,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "11472:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3005,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2991,
                                    "src": "11411:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 3007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "11411:23:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 3015,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11411:73:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3016,
                              "nodeType": "ExpressionStatement",
                              "src": "11411:73:6"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3020,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11518:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11518:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3022,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2928,
                              "src": "11530:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3023,
                              "name": "_pendingPichi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2963,
                              "src": "11535:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3019,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2207,
                            "src": "11510:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11510:39:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3025,
                        "nodeType": "EmitStatement",
                        "src": "11505:44:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2926,
                    "nodeType": "StructuredDocumentation",
                    "src": "10603:160:6",
                    "text": "@dev Harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of PICHI rewards."
                  },
                  "functionSelector": "18fccc76",
                  "id": 3027,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2928,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3027,
                        "src": "10785:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10785:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2930,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3027,
                        "src": "10798:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2929,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10798:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10784:25:6"
                  },
                  "returnParameters": {
                    "id": 2932,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10817:0:6"
                  },
                  "scope": 3244,
                  "src": "10768:788:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3163,
                    "nodeType": "Block",
                    "src": "11909:906:6",
                    "statements": [
                      {
                        "assignments": [
                          3038
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3038,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "11919:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3037,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "11919:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3042,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3040,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "11953:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3039,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2722,
                            "src": "11942:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 3041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11942:15:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11919:38:6"
                      },
                      {
                        "assignments": [
                          3044
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3044,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "11967:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3043,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "11967:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3051,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3045,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "11991:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 3047,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3046,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "12000:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11991:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 3050,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3048,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "12005:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12005:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11991:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11967:49:6"
                      },
                      {
                        "assignments": [
                          3053
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3053,
                            "mutability": "mutable",
                            "name": "accumulatedPichi",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "12026:23:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3052,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12026:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3065,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3059,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3038,
                                      "src": "12075:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 3060,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accPichiPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2132,
                                    "src": "12075:21:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3056,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3044,
                                      "src": "12059:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 3057,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "12059:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 627,
                                  "src": "12059:15:6",
                                  "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": 3061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12059:38:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3062,
                                "name": "ACC_PICHI_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2169,
                                "src": "12100:19:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12059:60:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12052:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 3054,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12052:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12052:68:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12026:94:6"
                      },
                      {
                        "assignments": [
                          3067
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3067,
                            "mutability": "mutable",
                            "name": "_pendingPichi",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "12130:21:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3066,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12130:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3075,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3070,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3044,
                                    "src": "12175:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                      "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 3071,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2129,
                                  "src": "12175:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3068,
                                  "name": "accumulatedPichi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3053,
                                  "src": "12154:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 3069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3457,
                                "src": "12154:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 3072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12154:37:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 3073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3517,
                            "src": "12154:47:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 3074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12154:49:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12130:73:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3076,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3044,
                              "src": "12233:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 3078,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "12233:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3089,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3085,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3038,
                                            "src": "12290:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                              "typeString": "struct MiniChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 3086,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accPichiPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2132,
                                          "src": "12290:21:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3083,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3032,
                                          "src": "12279:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3084,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "12279:10:6",
                                        "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": 3087,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12279:33:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3088,
                                      "name": "ACC_PICHI_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2169,
                                      "src": "12315:19:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12279:55:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12272:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 3081,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12272:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12272:63:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3079,
                                "name": "accumulatedPichi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3053,
                                "src": "12251:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 3080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3457,
                              "src": "12251:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 3091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12251:85:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12233:103:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 3093,
                        "nodeType": "ExpressionStatement",
                        "src": "12233:103:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3094,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3044,
                              "src": "12346:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 3096,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2127,
                            "src": "12346:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3100,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3032,
                                "src": "12376:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3097,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3044,
                                  "src": "12360:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 3098,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2127,
                                "src": "12360:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "12360:15:6",
                              "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": 3101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12360:23:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12346:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3103,
                        "nodeType": "ExpressionStatement",
                        "src": "12346:37:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3107,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3034,
                              "src": "12445:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3108,
                              "name": "_pendingPichi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3067,
                              "src": "12449:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3104,
                              "name": "PICHI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2140,
                              "src": "12426:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "12426:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12426:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3110,
                        "nodeType": "ExpressionStatement",
                        "src": "12426:37:6"
                      },
                      {
                        "assignments": [
                          3112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3112,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "12474:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3111,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "12474:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3116,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3113,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "12496:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 3115,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3114,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3030,
                            "src": "12505:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12496:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12474:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3119,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3112,
                                "src": "12531:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 3118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12523:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3117,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12523:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12523:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12553:1:6",
                                "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": 3122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12545:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3121,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12545:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12545:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12523:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3139,
                        "nodeType": "IfStatement",
                        "src": "12519:135:6",
                        "trueBody": {
                          "id": 3138,
                          "nodeType": "Block",
                          "src": "12557:97:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3129,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3030,
                                    "src": "12595:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3130,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12600:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3131,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12600:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3132,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3034,
                                    "src": "12612:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3133,
                                    "name": "_pendingPichi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3067,
                                    "src": "12616:13:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3134,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3044,
                                      "src": "12631:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 3135,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "12631:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3126,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3112,
                                    "src": "12571:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 3128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "12571:23:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 3136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12571:72:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3137,
                              "nodeType": "ExpressionStatement",
                              "src": "12571:72:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3144,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3034,
                              "src": "12690:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3145,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3032,
                              "src": "12694:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3140,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "12664:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 3142,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3141,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3030,
                                "src": "12672:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12664:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "12664:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12664:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3147,
                        "nodeType": "ExpressionStatement",
                        "src": "12664:37:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3149,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12726:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12726:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3151,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "12738:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3152,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3032,
                              "src": "12743:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3153,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3034,
                              "src": "12751:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3148,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2189,
                            "src": "12717:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 3154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12717:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3155,
                        "nodeType": "EmitStatement",
                        "src": "12712:42:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3157,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12777:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12777:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3159,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "12789:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3160,
                              "name": "_pendingPichi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3067,
                              "src": "12794:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3156,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2207,
                            "src": "12769:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12769:39:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3162,
                        "nodeType": "EmitStatement",
                        "src": "12764:44:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3028,
                    "nodeType": "StructuredDocumentation",
                    "src": "11566:262:6",
                    "text": "@dev Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens and PICHI rewards."
                  },
                  "functionSelector": "d1abb907",
                  "id": 3164,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndHarvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3030,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3164,
                        "src": "11861:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3029,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11861:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3032,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3164,
                        "src": "11874:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3031,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11874:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3034,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3164,
                        "src": "11890:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3033,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11890:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11860:41:6"
                  },
                  "returnParameters": {
                    "id": 3036,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11909:0:6"
                  },
                  "scope": 3244,
                  "src": "11833:982:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3242,
                    "nodeType": "Block",
                    "src": "13051:502:6",
                    "statements": [
                      {
                        "assignments": [
                          3173
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3173,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3242,
                            "src": "13061:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3172,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "13061:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3180,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3174,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "13085:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 3176,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3175,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3167,
                              "src": "13094:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13085:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 3179,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3177,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "13099:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3178,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13099:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13085:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13061:49:6"
                      },
                      {
                        "assignments": [
                          3182
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3182,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3242,
                            "src": "13120:14:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3181,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13120:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3185,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3183,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3173,
                            "src": "13137:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo storage pointer"
                            }
                          },
                          "id": 3184,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2127,
                          "src": "13137:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13120:28:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3186,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3173,
                              "src": "13158:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 3188,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2127,
                            "src": "13158:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3189,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13172:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13158:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3191,
                        "nodeType": "ExpressionStatement",
                        "src": "13158:15:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3192,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3173,
                              "src": "13183:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 3194,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "13183:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13201:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13183:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 3197,
                        "nodeType": "ExpressionStatement",
                        "src": "13183:19:6"
                      },
                      {
                        "assignments": [
                          3199
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3199,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3242,
                            "src": "13213:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3198,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "13213:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3203,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3200,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "13235:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 3202,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3201,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3167,
                            "src": "13244:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13235:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13213:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3206,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3199,
                                "src": "13270:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 3205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13262:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3204,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13262:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13262:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13292:1:6",
                                "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": 3209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13284:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3208,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13284:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13284:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "13262:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3225,
                        "nodeType": "IfStatement",
                        "src": "13258:113:6",
                        "trueBody": {
                          "id": 3224,
                          "nodeType": "Block",
                          "src": "13296:75:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3216,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3167,
                                    "src": "13334:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3217,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "13339:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3218,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13339:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3219,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3169,
                                    "src": "13351:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3220,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13355:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3221,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13358:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3213,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3199,
                                    "src": "13310:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 3215,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onPichiReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "13310:23:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 3222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13310:50:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3223,
                              "nodeType": "ExpressionStatement",
                              "src": "13310:50:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3230,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3169,
                              "src": "13474:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3231,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3182,
                              "src": "13478:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3226,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "13448:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 3228,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3227,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3167,
                                "src": "13456:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13448:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "13448:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13448:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3233,
                        "nodeType": "ExpressionStatement",
                        "src": "13448:37:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3235,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13518:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13518:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3237,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3167,
                              "src": "13530:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3238,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3182,
                              "src": "13535:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3239,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3169,
                              "src": "13543:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3234,
                            "name": "EmergencyWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2199,
                            "src": "13500:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 3240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13500:46:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3241,
                        "nodeType": "EmitStatement",
                        "src": "13495:51:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3165,
                    "nodeType": "StructuredDocumentation",
                    "src": "12821:166:6",
                    "text": "@dev Withdraw without caring about rewards. EMERGENCY ONLY.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "2f940c70",
                  "id": 3243,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "emergencyWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3167,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3243,
                        "src": "13019:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3166,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13019:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3169,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3243,
                        "src": "13032:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3168,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13032:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13018:25:6"
                  },
                  "returnParameters": {
                    "id": 3171,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13051:0:6"
                  },
                  "scope": 3244,
                  "src": "12992:561:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 3245,
              "src": "1095:12460:6"
            }
          ],
          "src": "33:13523:6"
        },
        "id": 6
      },
      "contracts/interfaces/IMasterChef.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IMasterChef.sol",
          "exportedSymbols": {
            "IMasterChef": [
              3285
            ]
          },
          "id": 3286,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3246,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:7"
            },
            {
              "id": 3247,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "56:33:7"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 3248,
              "nodeType": "ImportDirective",
              "scope": 3286,
              "sourceUnit": 554,
              "src": "90:75:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 3285,
              "linearizedBaseContracts": [
                3285
              ],
              "name": "IMasterChef",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3251,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3249,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "201:11:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "195:29:7",
                  "typeName": {
                    "contractScope": null,
                    "id": 3250,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "217:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "canonicalName": "IMasterChef.UserInfo",
                  "id": 3256,
                  "members": [
                    {
                      "constant": false,
                      "id": 3253,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3256,
                      "src": "255:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3252,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "255:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3255,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3256,
                      "src": "324:18:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3254,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "324:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 3285,
                  "src": "229:159:7",
                  "visibility": "public"
                },
                {
                  "canonicalName": "IMasterChef.PoolInfo",
                  "id": 3265,
                  "members": [
                    {
                      "constant": false,
                      "id": 3258,
                      "mutability": "mutable",
                      "name": "lpToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3265,
                      "src": "420:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$337",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3257,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 337,
                        "src": "420:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3260,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3265,
                      "src": "477:18:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3259,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "477:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3262,
                      "mutability": "mutable",
                      "name": "lastRewardBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3265,
                      "src": "589:23:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3261,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "589:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3264,
                      "mutability": "mutable",
                      "name": "accPichiPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3265,
                      "src": "675:24:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3263,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "675:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 3285,
                  "src": "394:367:7",
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1526fe27",
                  "id": 3272,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolInfo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3267,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3272,
                        "src": "785:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "785:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "784:13:7"
                  },
                  "returnParameters": {
                    "id": 3271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3270,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3272,
                        "src": "821:27:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$3265_memory_ptr",
                          "typeString": "struct IMasterChef.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3269,
                          "name": "IMasterChef.PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3265,
                          "src": "821:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3265_storage_ptr",
                            "typeString": "struct IMasterChef.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "820:29:7"
                  },
                  "scope": 3285,
                  "src": "767:83:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "17caf6f1",
                  "id": 3277,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalAllocPoint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3273,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "880:2:7"
                  },
                  "returnParameters": {
                    "id": 3276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3275,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3277,
                        "src": "906:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "906:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "905:9:7"
                  },
                  "scope": 3285,
                  "src": "856:59:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "e2bbb158",
                  "id": 3284,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3279,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3284,
                        "src": "938:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "938:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3281,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3284,
                        "src": "952:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "952:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "937:31:7"
                  },
                  "returnParameters": {
                    "id": 3283,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "977:0:7"
                  },
                  "scope": 3285,
                  "src": "921:57:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3286,
              "src": "167:813:7"
            }
          ],
          "src": "32:949:7"
        },
        "id": 7
      },
      "contracts/interfaces/IRewarder.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IRewarder.sol",
          "exportedSymbols": {
            "IRewarder": [
              3320
            ]
          },
          "id": 3321,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3287,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:8"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 3288,
              "nodeType": "ImportDirective",
              "scope": 3321,
              "sourceUnit": 554,
              "src": "57:75:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 3320,
              "linearizedBaseContracts": [
                3320
              ],
              "name": "IRewarder",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3291,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3289,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "166:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "160:29:8",
                  "typeName": {
                    "contractScope": null,
                    "id": 3290,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "182:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ad3b6836",
                  "id": 3304,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onPichiReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3293,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "227:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "227:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3295,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "248:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "248:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3297,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "270:17:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "270:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3299,
                        "mutability": "mutable",
                        "name": "pichiAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "297:19:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3298,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "297:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3301,
                        "mutability": "mutable",
                        "name": "newLpAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "326:19:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "326:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "217:134:8"
                  },
                  "returnParameters": {
                    "id": 3303,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "360:0:8"
                  },
                  "scope": 3320,
                  "src": "195:166:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 3319,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3306,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "399:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "399:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3308,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "420:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3310,
                        "mutability": "mutable",
                        "name": "pichiAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "442:19:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "442:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "389:78:8"
                  },
                  "returnParameters": {
                    "id": 3318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3314,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "491:15:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 3312,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "491:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3313,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "491:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3317,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "508:16:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3315,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "508:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3316,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "508:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "490:35:8"
                  },
                  "scope": 3320,
                  "src": "367:159:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3321,
              "src": "134:394:8"
            }
          ],
          "src": "33:496:8"
        },
        "id": 8
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/SignedSafeMath.sol",
          "exportedSymbols": {
            "SignedSafeMath": [
              3518
            ]
          },
          "id": 3519,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3322,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:9"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 3518,
              "linearizedBaseContracts": [
                3518
              ],
              "name": "SignedSafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 3328,
                  "mutability": "constant",
                  "name": "_INT256_MIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3518,
                  "src": "87:45:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3323,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "87:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const -578...(70 digits omitted)...9968"
                    },
                    "id": 3327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3325,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "125:2:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "126:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_minus_2_by_1",
                        "typeString": "int_const -2"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "323535",
                      "id": 3326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "129:3:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "125:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const -578...(70 digits omitted)...9968"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3376,
                    "nodeType": "Block",
                    "src": "442:490:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3338,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3331,
                            "src": "674:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "679:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "674:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3344,
                        "nodeType": "IfStatement",
                        "src": "670:45:9",
                        "trueBody": {
                          "id": 3343,
                          "nodeType": "Block",
                          "src": "682:33:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "703:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 3337,
                              "id": 3342,
                              "nodeType": "Return",
                              "src": "696:8:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "733:30:9",
                              "subExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3353,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3349,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3346,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3331,
                                        "src": "735:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3348,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "740:2:9",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 3347,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "741:1:9",
                                          "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"
                                        }
                                      },
                                      "src": "735:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3352,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3350,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3333,
                                        "src": "746:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3351,
                                        "name": "_INT256_MIN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3328,
                                        "src": "751:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "746:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "735:27:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3354,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "734:29:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 3356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "765:41:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              },
                              "value": "SignedSafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 3345,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "725:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "725:82:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3358,
                        "nodeType": "ExpressionStatement",
                        "src": "725:82:9"
                      },
                      {
                        "assignments": [
                          3360
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3360,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3376,
                            "src": "818:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3359,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "818:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3364,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3361,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3331,
                            "src": "829:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3362,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3333,
                            "src": "833:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "829:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "818:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 3370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 3368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3366,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3360,
                                  "src": "852:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3367,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3331,
                                  "src": "856:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "852:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3369,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3333,
                                "src": "861:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "852:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 3371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "864:41:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              },
                              "value": "SignedSafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 3365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "844:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "844:62:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3373,
                        "nodeType": "ExpressionStatement",
                        "src": "844:62:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3374,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3360,
                          "src": "924:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 3337,
                        "id": 3375,
                        "nodeType": "Return",
                        "src": "917:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3329,
                    "nodeType": "StructuredDocumentation",
                    "src": "139:234:9",
                    "text": " @dev Returns the multiplication of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                  },
                  "id": 3377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3334,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3331,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3377,
                        "src": "391:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3330,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "391:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3333,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3377,
                        "src": "401:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3332,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "401:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "390:20:9"
                  },
                  "returnParameters": {
                    "id": 3337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3336,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3377,
                        "src": "434:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3335,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "434:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "433:8:9"
                  },
                  "scope": 3518,
                  "src": "378:554:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3416,
                    "nodeType": "Block",
                    "src": "1456:200:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 3390,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3388,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3382,
                                "src": "1474:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1479:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1474:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206279207a65726f",
                              "id": 3391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1482:34:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd",
                                "typeString": "literal_string \"SignedSafeMath: division by zero\""
                              },
                              "value": "SignedSafeMath: division by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd",
                                "typeString": "literal_string \"SignedSafeMath: division by zero\""
                              }
                            ],
                            "id": 3387,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1466:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1466:51:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3393,
                        "nodeType": "ExpressionStatement",
                        "src": "1466:51:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1535:30:9",
                              "subExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3402,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3398,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3395,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3382,
                                        "src": "1537:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3397,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "1542:2:9",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 3396,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1543:1:9",
                                          "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"
                                        }
                                      },
                                      "src": "1537:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3401,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3399,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3380,
                                        "src": "1548:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3400,
                                        "name": "_INT256_MIN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3328,
                                        "src": "1553:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1548:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1537:27:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3403,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1536:29:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77",
                              "id": 3405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1567:35:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81",
                                "typeString": "literal_string \"SignedSafeMath: division overflow\""
                              },
                              "value": "SignedSafeMath: division overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81",
                                "typeString": "literal_string \"SignedSafeMath: division overflow\""
                              }
                            ],
                            "id": 3394,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1527:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1527:76:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3407,
                        "nodeType": "ExpressionStatement",
                        "src": "1527:76:9"
                      },
                      {
                        "assignments": [
                          3409
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3409,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3416,
                            "src": "1614:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3408,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1614:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3413,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3410,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3380,
                            "src": "1625:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3411,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3382,
                            "src": "1629:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1625:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1614:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3414,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3409,
                          "src": "1648:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 3386,
                        "id": 3415,
                        "nodeType": "Return",
                        "src": "1641:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3378,
                    "nodeType": "StructuredDocumentation",
                    "src": "938:449:9",
                    "text": " @dev Returns the integer division of two signed integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 3417,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3380,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3417,
                        "src": "1405:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3379,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1405:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3382,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3417,
                        "src": "1415:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3381,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1415:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1404:20:9"
                  },
                  "returnParameters": {
                    "id": 3386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3385,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3417,
                        "src": "1448:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3384,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1448:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1447:8:9"
                  },
                  "scope": 3518,
                  "src": "1392:264:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3456,
                    "nodeType": "Block",
                    "src": "1959:149:9",
                    "statements": [
                      {
                        "assignments": [
                          3428
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3428,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3456,
                            "src": "1969:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3427,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1969:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3432,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3429,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3420,
                            "src": "1980:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3430,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3422,
                            "src": "1984:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1980:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1969:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3450,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3436,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3434,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3422,
                                        "src": "2004:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2009:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2004:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3439,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3437,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3428,
                                        "src": "2014:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3438,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3420,
                                        "src": "2019:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2014:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2004:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3441,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2003:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3442,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3422,
                                        "src": "2026:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3443,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2030:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2026:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3447,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3445,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3428,
                                        "src": "2035:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3446,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3420,
                                        "src": "2039:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2035:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2026:14:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3449,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2025:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2003:38:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77",
                              "id": 3451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2043:38:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd",
                                "typeString": "literal_string \"SignedSafeMath: subtraction overflow\""
                              },
                              "value": "SignedSafeMath: subtraction overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd",
                                "typeString": "literal_string \"SignedSafeMath: subtraction overflow\""
                              }
                            ],
                            "id": 3433,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1995:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1995:87:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3453,
                        "nodeType": "ExpressionStatement",
                        "src": "1995:87:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3454,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3428,
                          "src": "2100:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 3426,
                        "id": 3455,
                        "nodeType": "Return",
                        "src": "2093:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3418,
                    "nodeType": "StructuredDocumentation",
                    "src": "1662:228:9",
                    "text": " @dev Returns the subtraction of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                  },
                  "id": 3457,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3420,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3457,
                        "src": "1908:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3419,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1908:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3422,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3457,
                        "src": "1918:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3421,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1918:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1907:20:9"
                  },
                  "returnParameters": {
                    "id": 3426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3425,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3457,
                        "src": "1951:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3424,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1951:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1950:8:9"
                  },
                  "scope": 3518,
                  "src": "1895:213:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3496,
                    "nodeType": "Block",
                    "src": "2405:146:9",
                    "statements": [
                      {
                        "assignments": [
                          3468
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3468,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3496,
                            "src": "2415:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3467,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2415:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3472,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3469,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3460,
                            "src": "2426:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3470,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3462,
                            "src": "2430:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2426:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2415:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3476,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3474,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3462,
                                        "src": "2450:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3475,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2455:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2450:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3477,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3468,
                                        "src": "2460:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3478,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3460,
                                        "src": "2465:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2460:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2450:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3481,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2449:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3488,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3484,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3482,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3462,
                                        "src": "2472:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3483,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2476:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2472:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3487,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3485,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3468,
                                        "src": "2481:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3486,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3460,
                                        "src": "2485:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2481:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2472:14:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3489,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2471:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2449:38:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77",
                              "id": 3491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2489:35:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb",
                                "typeString": "literal_string \"SignedSafeMath: addition overflow\""
                              },
                              "value": "SignedSafeMath: addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb",
                                "typeString": "literal_string \"SignedSafeMath: addition overflow\""
                              }
                            ],
                            "id": 3473,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2441:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2441:84:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3493,
                        "nodeType": "ExpressionStatement",
                        "src": "2441:84:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3494,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3468,
                          "src": "2543:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 3466,
                        "id": 3495,
                        "nodeType": "Return",
                        "src": "2536:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3458,
                    "nodeType": "StructuredDocumentation",
                    "src": "2114:222:9",
                    "text": " @dev Returns the addition of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                  },
                  "id": 3497,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3460,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3497,
                        "src": "2354:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3459,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2354:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3462,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3497,
                        "src": "2364:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3461,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2364:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2353:20:9"
                  },
                  "returnParameters": {
                    "id": 3466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3465,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3497,
                        "src": "2397:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3464,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2397:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2396:8:9"
                  },
                  "scope": 3518,
                  "src": "2341:210:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3516,
                    "nodeType": "Block",
                    "src": "2618:74:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 3507,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3505,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3499,
                                "src": "2636:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3506,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2641:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2636:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e7465676572203c2030",
                              "id": 3508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2644:13:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_072bbf819d7fcc25efb63989aaa3ad43d444efad2d36a2598ffe45c4c4d00f7a",
                                "typeString": "literal_string \"Integer < 0\""
                              },
                              "value": "Integer < 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_072bbf819d7fcc25efb63989aaa3ad43d444efad2d36a2598ffe45c4c4d00f7a",
                                "typeString": "literal_string \"Integer < 0\""
                              }
                            ],
                            "id": 3504,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2628:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2628:30:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3510,
                        "nodeType": "ExpressionStatement",
                        "src": "2628:30:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3513,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3499,
                              "src": "2683:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 3512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2675:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 3511,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2675:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2675:10:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3503,
                        "id": 3515,
                        "nodeType": "Return",
                        "src": "2668:17:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3517,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUInt256",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3499,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3517,
                        "src": "2576:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3498,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2576:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2575:10:9"
                  },
                  "returnParameters": {
                    "id": 3503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3502,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3517,
                        "src": "2609:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2609:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2608:9:9"
                  },
                  "scope": 3518,
                  "src": "2557:135:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3519,
              "src": "58:2636:9"
            }
          ],
          "src": "33:2662:9"
        },
        "id": 9
      },
      "contracts/mocks/ComplexRewarder.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ComplexRewarder.sol",
          "exportedSymbols": {
            "ComplexRewarder": [
              4146
            ]
          },
          "id": 4147,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3520,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:10"
            },
            {
              "id": 3521,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "57:33:10"
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "../interfaces/IRewarder.sol",
              "id": 3522,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 3321,
              "src": "91:37:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 3523,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 554,
              "src": "129:75:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 3524,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 842,
              "src": "205:74:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "id": 3525,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 272,
              "src": "280:67:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/MasterChefV2.sol",
              "file": "../MasterChefV2.sol",
              "id": 3526,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 2092,
              "src": "348:29:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3528,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3320,
                    "src": "427:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 3529,
                  "nodeType": "InheritanceSpecifier",
                  "src": "427:9:10"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3530,
                    "name": "BoringOwnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "438:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnable_$271",
                      "typeString": "contract BoringOwnable"
                    }
                  },
                  "id": 3531,
                  "nodeType": "InheritanceSpecifier",
                  "src": "438:13:10"
                }
              ],
              "contractDependencies": [
                152,
                271,
                3320
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 3527,
                "nodeType": "StructuredDocumentation",
                "src": "379:20:10",
                "text": "@author @0xKeno"
              },
              "fullyImplemented": true,
              "id": 4146,
              "linearizedBaseContracts": [
                4146,
                271,
                152,
                3320
              ],
              "name": "ComplexRewarder",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3534,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3532,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "464:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "458:29:10",
                  "typeName": {
                    "id": 3533,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "479:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 3537,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3535,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 751,
                    "src": "498:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$751",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "492:32:10",
                  "typeName": {
                    "id": 3536,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "516:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 3540,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3538,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "535:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "529:29:10",
                  "typeName": {
                    "contractScope": null,
                    "id": 3539,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "551:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 3542,
                  "mutability": "immutable",
                  "name": "rewardToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "564:36:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3541,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "564:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "canonicalName": "ComplexRewarder.UserInfo",
                  "id": 3547,
                  "members": [
                    {
                      "constant": false,
                      "id": 3544,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3547,
                      "src": "789:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3543,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "789:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3546,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3547,
                      "src": "813:18:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3545,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "813:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4146,
                  "src": "763:75:10",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ComplexRewarder.PoolInfo",
                  "id": 3554,
                  "members": [
                    {
                      "constant": false,
                      "id": 3549,
                      "mutability": "mutable",
                      "name": "accPichiPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3554,
                      "src": "1049:24:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3548,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1049:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3551,
                      "mutability": "mutable",
                      "name": "lastRewardBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3554,
                      "src": "1083:22:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3550,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1083:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3553,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3554,
                      "src": "1115:17:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3552,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1115:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4146,
                  "src": "1023:116:10",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 3555,
                    "nodeType": "StructuredDocumentation",
                    "src": "1145:27:10",
                    "text": "@dev Info of each pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 3559,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1177:44:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                    "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo)"
                  },
                  "typeName": {
                    "id": 3558,
                    "keyType": {
                      "id": 3556,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1185:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1177:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                      "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 3557,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3554,
                      "src": "1196:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$3554_storage_ptr",
                        "typeString": "struct ComplexRewarder.PoolInfo"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "69883b4e",
                  "id": 3562,
                  "mutability": "mutable",
                  "name": "poolIds",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1228:24:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3560,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1228:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3561,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1228:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 3563,
                    "nodeType": "StructuredDocumentation",
                    "src": "1259:49:10",
                    "text": "@dev Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 3569,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1313:64:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo))"
                  },
                  "typeName": {
                    "id": 3568,
                    "keyType": {
                      "id": 3564,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1321:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1313:48:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo))"
                    },
                    "valueType": {
                      "id": 3567,
                      "keyType": {
                        "id": 3565,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1340:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1332:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$",
                        "typeString": "mapping(address => struct ComplexRewarder.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 3566,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3547,
                        "src": "1351:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                          "typeString": "struct ComplexRewarder.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 3570,
                    "nodeType": "StructuredDocumentation",
                    "src": "1383:88:10",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "id": 3572,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1476:23:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1476:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "4198709a",
                  "id": 3574,
                  "mutability": "mutable",
                  "name": "tokenPerBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1506:28:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1506:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 3577,
                  "mutability": "constant",
                  "name": "ACC_TOKEN_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1540:51:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3575,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1540:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 3576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1587:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3579,
                  "mutability": "immutable",
                  "name": "MASTERCHEF_V2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1598:39:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3578,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1598:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3589,
                  "name": "LogOnReward",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3588,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3581,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3589,
                        "src": "1662:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3580,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1662:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3583,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3589,
                        "src": "1684:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3582,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1684:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3585,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3589,
                        "src": "1705:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3584,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1705:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3587,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3589,
                        "src": "1721:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1721:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1661:79:10"
                  },
                  "src": "1644:97:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3595,
                  "name": "LogPoolAddition",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3591,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3595,
                        "src": "1768:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3590,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1768:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3593,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3595,
                        "src": "1789:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1789:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1767:41:10"
                  },
                  "src": "1746:63:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3601,
                  "name": "LogSetPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3597,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3601,
                        "src": "1831:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3596,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1831:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3599,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3601,
                        "src": "1852:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3598,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1852:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1830:41:10"
                  },
                  "src": "1814:58:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3611,
                  "name": "LogUpdatePool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3603,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3611,
                        "src": "1897:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3602,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1897:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3605,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardBlock",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3611,
                        "src": "1918:22:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 3604,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1918:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3607,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3611,
                        "src": "1942:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3606,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1942:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3609,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accPichiPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3611,
                        "src": "1960:24:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1960:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1896:89:10"
                  },
                  "src": "1877:109:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3613,
                  "name": "LogInit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3612,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2004:2:10"
                  },
                  "src": "1991:16:10"
                },
                {
                  "body": {
                    "id": 3634,
                    "nodeType": "Block",
                    "src": "2131:123:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3622,
                            "name": "rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3542,
                            "src": "2141:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3623,
                            "name": "_rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3615,
                            "src": "2155:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2141:26:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 3625,
                        "nodeType": "ExpressionStatement",
                        "src": "2141:26:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3626,
                            "name": "tokenPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3574,
                            "src": "2177:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3627,
                            "name": "_tokenPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3617,
                            "src": "2193:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2177:30:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3629,
                        "nodeType": "ExpressionStatement",
                        "src": "2177:30:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3630,
                            "name": "MASTERCHEF_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3579,
                            "src": "2217:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3631,
                            "name": "_MASTERCHEF_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3619,
                            "src": "2233:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2217:30:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3633,
                        "nodeType": "ExpressionStatement",
                        "src": "2217:30:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3635,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3615,
                        "mutability": "mutable",
                        "name": "_rewardToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3635,
                        "src": "2034:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3614,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "2034:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3617,
                        "mutability": "mutable",
                        "name": "_tokenPerBlock",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3635,
                        "src": "2063:22:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2063:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3619,
                        "mutability": "mutable",
                        "name": "_MASTERCHEF_V2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3635,
                        "src": "2095:22:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3618,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2095:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2024:99:10"
                  },
                  "returnParameters": {
                    "id": 3621,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2131:0:10"
                  },
                  "scope": 4146,
                  "src": "2013:241:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3304
                  ],
                  "body": {
                    "id": 3722,
                    "nodeType": "Block",
                    "src": "2422:499:10",
                    "statements": [
                      {
                        "assignments": [
                          3652
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3652,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3722,
                            "src": "2432:20:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3651,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3554,
                              "src": "2432:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$3554_storage_ptr",
                                "typeString": "struct ComplexRewarder.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3656,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3654,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3637,
                              "src": "2466:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3653,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4145,
                            "src": "2455:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$3554_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct ComplexRewarder.PoolInfo memory)"
                            }
                          },
                          "id": 3655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2455:15:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                            "typeString": "struct ComplexRewarder.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2432:38:10"
                      },
                      {
                        "assignments": [
                          3658
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3658,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3722,
                            "src": "2480:21:10",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                              "typeString": "struct ComplexRewarder.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3657,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3547,
                              "src": "2480:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3664,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3659,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3569,
                              "src": "2504:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo storage ref))"
                              }
                            },
                            "id": 3661,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3660,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3637,
                              "src": "2513:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2504:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$",
                              "typeString": "mapping(address => struct ComplexRewarder.UserInfo storage ref)"
                            }
                          },
                          "id": 3663,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3662,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3639,
                            "src": "2518:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2504:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$3547_storage",
                            "typeString": "struct ComplexRewarder.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2480:44:10"
                      },
                      {
                        "assignments": [
                          3666
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3666,
                            "mutability": "mutable",
                            "name": "pending",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3722,
                            "src": "2534:15:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3665,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2534:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3667,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2534:15:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3668,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3658,
                              "src": "2563:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                              }
                            },
                            "id": 3669,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3544,
                            "src": "2563:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2577:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2563:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3696,
                        "nodeType": "IfStatement",
                        "src": "2559:190:10",
                        "trueBody": {
                          "id": 3695,
                          "nodeType": "Block",
                          "src": "2580:169:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3672,
                                  "name": "pending",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3666,
                                  "src": "2594:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3683,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3658,
                                        "src": "2671:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                          "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 3684,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "rewardDebt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3546,
                                      "src": "2671:15:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3680,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 3676,
                                                  "name": "pool",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3652,
                                                  "src": "2621:4:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                                    "typeString": "struct ComplexRewarder.PoolInfo memory"
                                                  }
                                                },
                                                "id": 3677,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "accPichiPerShare",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3549,
                                                "src": "2621:21:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 3673,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3658,
                                                  "src": "2605:4:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                                    "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                                                  }
                                                },
                                                "id": 3674,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "amount",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3544,
                                                "src": "2605:11:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 3675,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "2605:15:10",
                                              "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": 3678,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2605:38:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 3679,
                                            "name": "ACC_TOKEN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3577,
                                            "src": "2646:19:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2605:60:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3681,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2604:62:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3682,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 599,
                                    "src": "2604:66:10",
                                    "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": 3685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2604:83:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2594:93:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3687,
                              "nodeType": "ExpressionStatement",
                              "src": "2594:93:10"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3691,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3641,
                                    "src": "2726:2:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3692,
                                    "name": "pending",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3666,
                                    "src": "2730:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3688,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3542,
                                    "src": "2701:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3690,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "2701:24:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 3693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2701:37:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3694,
                              "nodeType": "ExpressionStatement",
                              "src": "2701:37:10"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3697,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3658,
                              "src": "2758:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                              }
                            },
                            "id": 3699,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3544,
                            "src": "2758:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3700,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3645,
                            "src": "2772:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2758:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3702,
                        "nodeType": "ExpressionStatement",
                        "src": "2758:21:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3703,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3658,
                              "src": "2789:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                              }
                            },
                            "id": 3705,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3546,
                            "src": "2789:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3708,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3652,
                                    "src": "2819:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                      "typeString": "struct ComplexRewarder.PoolInfo memory"
                                    }
                                  },
                                  "id": 3709,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accPichiPerShare",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3549,
                                  "src": "2819:21:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3706,
                                  "name": "lpToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3645,
                                  "src": "2807:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 627,
                                "src": "2807:11:10",
                                "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": 3710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2807:34:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3711,
                              "name": "ACC_TOKEN_PRECISION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3577,
                              "src": "2844:19:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2807:56:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2789:74:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3714,
                        "nodeType": "ExpressionStatement",
                        "src": "2789:74:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3716,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3639,
                              "src": "2890:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3717,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3637,
                              "src": "2897:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3718,
                              "name": "pending",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3666,
                              "src": "2902:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3719,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3641,
                              "src": "2911:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3715,
                            "name": "LogOnReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3589,
                            "src": "2878:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 3720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2878:36:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3721,
                        "nodeType": "EmitStatement",
                        "src": "2873:41:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ad3b6836",
                  "id": 3723,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3649,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3648,
                        "name": "onlyMCV2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3793,
                        "src": "2413:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2413:8:10"
                    }
                  ],
                  "name": "onPichiReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3647,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2404:8:10"
                  },
                  "parameters": {
                    "id": 3646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3637,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2292:11:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2292:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3639,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2313:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2313:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3641,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2336:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3640,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2336:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3643,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2356:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3642,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2356:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3645,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2373:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2373:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2282:112:10"
                  },
                  "returnParameters": {
                    "id": 3650,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2422:0:10"
                  },
                  "scope": 4146,
                  "src": "2260:661:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3319
                  ],
                  "body": {
                    "id": 3780,
                    "nodeType": "Block",
                    "src": "3110:267:10",
                    "statements": [
                      {
                        "assignments": [
                          3742
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3742,
                            "mutability": "mutable",
                            "name": "_rewardTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3780,
                            "src": "3120:29:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 3740,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "3120:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 3741,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3120:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3748,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3165:1:10",
                              "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"
                              }
                            ],
                            "id": 3745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3152:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (contract IERC20[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 3743,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "3156:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 3744,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3156:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            }
                          },
                          "id": 3747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3152:15:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3120:47:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3749,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3742,
                              "src": "3177:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 3751,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3191: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": "3177:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3752,
                                "name": "rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3542,
                                "src": "3197:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "id": 3753,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3196:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3177:32:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 3755,
                        "nodeType": "ExpressionStatement",
                        "src": "3177:32:10"
                      },
                      {
                        "assignments": [
                          3760
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3760,
                            "mutability": "mutable",
                            "name": "_rewardAmounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3780,
                            "src": "3219:31:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3758,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3219:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3759,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3219:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3766,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3267:1:10",
                              "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"
                              }
                            ],
                            "id": 3763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3253:13:10",
                            "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": 3761,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3257:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3762,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3257:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 3765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3253:16:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3219:50:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3767,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3760,
                              "src": "3279:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3769,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3294: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": "3279:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3771,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3725,
                                "src": "3312:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3772,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3727,
                                "src": "3317:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3770,
                              "name": "pendingToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4003,
                              "src": "3299:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (uint256,address) view returns (uint256)"
                              }
                            },
                            "id": 3773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3299:23:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3279:43:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3775,
                        "nodeType": "ExpressionStatement",
                        "src": "3279:43:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3776,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3742,
                              "src": "3340:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3777,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3760,
                              "src": "3355:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3778,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3339:31:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 3738,
                        "id": 3779,
                        "nodeType": "Return",
                        "src": "3332:38:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 3781,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3731,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3030:8:10"
                  },
                  "parameters": {
                    "id": 3730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3725,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "2959:11:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2959:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3727,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "2980:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3726,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2980:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3729,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "3002:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3002:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2949:66:10"
                  },
                  "returnParameters": {
                    "id": 3738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3734,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "3048:28:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 3732,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "3048:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3733,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3048:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3737,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "3078:30:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3735,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3078:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3736,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3078:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3047:62:10"
                  },
                  "scope": 4146,
                  "src": "2927:450:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3792,
                    "nodeType": "Block",
                    "src": "3401:101:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3784,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3419:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3419:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3786,
                                "name": "MASTERCHEF_V2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3579,
                                "src": "3433:13:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3419:27:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2e",
                              "id": 3788,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3448:35:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              },
                              "value": "Only MCV2 can call this function."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              }
                            ],
                            "id": 3783,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3411:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3411:73:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3790,
                        "nodeType": "ExpressionStatement",
                        "src": "3411:73:10"
                      },
                      {
                        "id": 3791,
                        "nodeType": "PlaceholderStatement",
                        "src": "3494:1:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3793,
                  "name": "onlyMCV2",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3782,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3401:0:10"
                  },
                  "src": "3383:119:10",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3804,
                    "nodeType": "Block",
                    "src": "3613:39:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3799,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3797,
                            "src": "3623:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3800,
                              "name": "poolIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3562,
                              "src": "3631:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 3801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3631:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3623:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3803,
                        "nodeType": "ExpressionStatement",
                        "src": "3623:22:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3794,
                    "nodeType": "StructuredDocumentation",
                    "src": "3508:42:10",
                    "text": "@dev Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 3805,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3795,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3574:2:10"
                  },
                  "returnParameters": {
                    "id": 3798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3797,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3805,
                        "src": "3598:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3598:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3597:15:10"
                  },
                  "scope": 4146,
                  "src": "3555:97:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3862,
                    "nodeType": "Block",
                    "src": "3963:398:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 3821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3816,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3559,
                                    "src": "3981:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                      "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                                    }
                                  },
                                  "id": 3818,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3817,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3810,
                                    "src": "3990:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3981:14:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                    "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                                  }
                                },
                                "id": 3819,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastRewardBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3551,
                                "src": "3981:30:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4015:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3981:35:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20616c726561647920657869737473",
                              "id": 3822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4018:21:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12db6f275306e49a55f39c487439bf20013b2e7f9ac363f83c1b47cbc0b35b95",
                                "typeString": "literal_string \"Pool already exists\""
                              },
                              "value": "Pool already exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12db6f275306e49a55f39c487439bf20013b2e7f9ac363f83c1b47cbc0b35b95",
                                "typeString": "literal_string \"Pool already exists\""
                              }
                            ],
                            "id": 3815,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3973:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3973:67:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3824,
                        "nodeType": "ExpressionStatement",
                        "src": "3973:67:10"
                      },
                      {
                        "assignments": [
                          3826
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3826,
                            "mutability": "mutable",
                            "name": "lastRewardBlock",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3862,
                            "src": "4050:23:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3825,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4050:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3829,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3827,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "4076:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4076:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4050:38:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3830,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3572,
                            "src": "4098:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3833,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3808,
                                "src": "4136:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3831,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3572,
                                "src": "4116:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "4116:19:10",
                              "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": 3834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4116:31:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4098:49:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3836,
                        "nodeType": "ExpressionStatement",
                        "src": "4098:49:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3837,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3559,
                              "src": "4158:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                              }
                            },
                            "id": 3839,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3838,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3810,
                              "src": "4167:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4158:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                              "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3841,
                                    "name": "allocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3808,
                                    "src": "4197:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "to64",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 679,
                                  "src": "4197:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint64)"
                                  }
                                },
                                "id": 3843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4197:17:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3844,
                                    "name": "lastRewardBlock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3826,
                                    "src": "4233:15:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "to64",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 679,
                                  "src": "4233:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint64)"
                                  }
                                },
                                "id": 3846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4233:22:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4275:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3840,
                              "name": "PoolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3554,
                              "src": "4175:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_PoolInfo_$3554_storage_ptr_$",
                                "typeString": "type(struct ComplexRewarder.PoolInfo storage pointer)"
                              }
                            },
                            "id": 3848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "allocPoint",
                              "lastRewardBlock",
                              "accPichiPerShare"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "4175:103:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo memory"
                            }
                          },
                          "src": "4158:120:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                            "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                          }
                        },
                        "id": 3850,
                        "nodeType": "ExpressionStatement",
                        "src": "4158:120:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3854,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3810,
                              "src": "4301:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3851,
                              "name": "poolIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3562,
                              "src": "4288:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 3853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4288:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 3855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4288:18:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3856,
                        "nodeType": "ExpressionStatement",
                        "src": "4288:18:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3858,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3810,
                              "src": "4337:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3859,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3808,
                              "src": "4343:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3857,
                            "name": "LogPoolAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3595,
                            "src": "4321:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 3860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4321:33:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3861,
                        "nodeType": "EmitStatement",
                        "src": "4316:38:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3806,
                    "nodeType": "StructuredDocumentation",
                    "src": "3658:236:10",
                    "text": "@dev Add a new LP to the pool.  Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _pid Pid on MCV2"
                  },
                  "functionSelector": "771602f7",
                  "id": 3863,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3813,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3812,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "3953:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3953:9:10"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3808,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3863,
                        "src": "3912:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3807,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3912:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3810,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3863,
                        "src": "3932:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3809,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3932:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3911:34:10"
                  },
                  "returnParameters": {
                    "id": 3814,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3963:0:10"
                  },
                  "scope": 4146,
                  "src": "3899:462:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3900,
                    "nodeType": "Block",
                    "src": "4657:198:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3873,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3572,
                            "src": "4667:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3882,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3868,
                                "src": "4736:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3876,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3559,
                                        "src": "4705:8:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                          "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                                        }
                                      },
                                      "id": 3878,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3877,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3866,
                                        "src": "4714:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4705:14:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                        "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 3879,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3553,
                                    "src": "4705:25:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3874,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3572,
                                    "src": "4685:15:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "4685:19:10",
                                  "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": 3880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4685:46:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "4685:50:10",
                              "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": 3883,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4685:63:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4667:81:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3885,
                        "nodeType": "ExpressionStatement",
                        "src": "4667:81:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3886,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3559,
                                "src": "4758:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                  "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                                }
                              },
                              "id": 3888,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3887,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3866,
                                "src": "4767:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4758:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                              }
                            },
                            "id": 3889,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3553,
                            "src": "4758:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3890,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3868,
                                "src": "4786:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 679,
                              "src": "4786:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 3892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4786:18:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "4758:46:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 3894,
                        "nodeType": "ExpressionStatement",
                        "src": "4758:46:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3896,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3866,
                              "src": "4830:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3897,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3868,
                              "src": "4836:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3895,
                            "name": "LogSetPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3601,
                            "src": "4819:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 3898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4819:29:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3899,
                        "nodeType": "EmitStatement",
                        "src": "4814:34:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3864,
                    "nodeType": "StructuredDocumentation",
                    "src": "4367:220:10",
                    "text": "@dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool."
                  },
                  "functionSelector": "1ab06ee5",
                  "id": 3901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3871,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3870,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "4647:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4647:9:10"
                    }
                  ],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3866,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3901,
                        "src": "4605:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3865,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4605:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3868,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3901,
                        "src": "4619:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3867,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4619:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4604:35:10"
                  },
                  "returnParameters": {
                    "id": 3872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4657:0:10"
                  },
                  "scope": 4146,
                  "src": "4592:263:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4002,
                    "nodeType": "Block",
                    "src": "5150:709:10",
                    "statements": [
                      {
                        "assignments": [
                          3912
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3912,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4002,
                            "src": "5160:20:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3911,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3554,
                              "src": "5160:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$3554_storage_ptr",
                                "typeString": "struct ComplexRewarder.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3916,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3913,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3559,
                            "src": "5183:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                              "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                            }
                          },
                          "id": 3915,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3914,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3904,
                            "src": "5192:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5183:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                            "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5160:37:10"
                      },
                      {
                        "assignments": [
                          3918
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3918,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4002,
                            "src": "5207:21:10",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                              "typeString": "struct ComplexRewarder.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3917,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3547,
                              "src": "5207:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3924,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3919,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3569,
                              "src": "5231:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo storage ref))"
                              }
                            },
                            "id": 3921,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3920,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3904,
                              "src": "5240:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5231:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$",
                              "typeString": "mapping(address => struct ComplexRewarder.UserInfo storage ref)"
                            }
                          },
                          "id": 3923,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3922,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3906,
                            "src": "5246:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5231:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$3547_storage",
                            "typeString": "struct ComplexRewarder.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5207:45:10"
                      },
                      {
                        "assignments": [
                          3926
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3926,
                            "mutability": "mutable",
                            "name": "accPichiPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4002,
                            "src": "5262:24:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3925,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5262:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3929,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3927,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3912,
                            "src": "5289:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo memory"
                            }
                          },
                          "id": 3928,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accPichiPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3549,
                          "src": "5289:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5262:48:10"
                      },
                      {
                        "assignments": [
                          3931
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3931,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4002,
                            "src": "5320:16:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3930,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5320:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3941,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3939,
                              "name": "MASTERCHEF_V2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3579,
                              "src": "5391:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3936,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3904,
                                  "src": "5375:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3933,
                                      "name": "MASTERCHEF_V2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3579,
                                      "src": "5352:13:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3932,
                                    "name": "MasterChefV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2091,
                                    "src": "5339:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MasterChefV2_$2091_$",
                                      "typeString": "type(contract MasterChefV2)"
                                    }
                                  },
                                  "id": 3934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5339:27:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                },
                                "id": 3935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lpToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 906,
                                "src": "5339:35:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$337_$",
                                  "typeString": "function (uint256) view external returns (contract IERC20)"
                                }
                              },
                              "id": 3937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5339:41:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "5339:51:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5339:66:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5320:85:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3942,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "5419:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 3943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5419:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3944,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3912,
                                "src": "5434:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                  "typeString": "struct ComplexRewarder.PoolInfo memory"
                                }
                              },
                              "id": 3945,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3551,
                              "src": "5434:20:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "5419:35:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3947,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3931,
                              "src": "5458:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5470:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5458:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5419:52:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3986,
                        "nodeType": "IfStatement",
                        "src": "5415:340:10",
                        "trueBody": {
                          "id": 3985,
                          "nodeType": "Block",
                          "src": "5473:282:10",
                          "statements": [
                            {
                              "assignments": [
                                3952
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3952,
                                  "mutability": "mutable",
                                  "name": "blocks",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3985,
                                  "src": "5487:14:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3951,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5487:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3959,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3956,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3912,
                                      "src": "5521:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                        "typeString": "struct ComplexRewarder.PoolInfo memory"
                                      }
                                    },
                                    "id": 3957,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3551,
                                    "src": "5521:20:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3953,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "5504:5:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 3954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5504:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "5504:16:10",
                                  "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": 3958,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5504:38:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5487:55:10"
                            },
                            {
                              "assignments": [
                                3961
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3961,
                                  "mutability": "mutable",
                                  "name": "pichiReward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3985,
                                  "src": "5556:19:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3960,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5556:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3972,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3971,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3967,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3912,
                                        "src": "5608:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                          "typeString": "struct ComplexRewarder.PoolInfo memory"
                                        }
                                      },
                                      "id": 3968,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3553,
                                      "src": "5608:15:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3964,
                                          "name": "tokenPerBlock",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3574,
                                          "src": "5589:13:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3962,
                                          "name": "blocks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3952,
                                          "src": "5578:6:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3963,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "5578:10:10",
                                        "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": 3965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5578:25:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 627,
                                    "src": "5578:29:10",
                                    "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": 3969,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5578:46:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3970,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3572,
                                  "src": "5627:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5578:64:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5556:86:10"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3983,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3973,
                                  "name": "accPichiPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3926,
                                  "src": "5656:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3981,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 3978,
                                            "name": "ACC_TOKEN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3577,
                                            "src": "5712:19:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3976,
                                            "name": "pichiReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3961,
                                            "src": "5696:11:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3977,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "5696:15:10",
                                          "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": 3979,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5696:36:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3980,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3931,
                                        "src": "5735:8:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5696:47:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3974,
                                      "name": "accPichiPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "5675:16:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3975,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 577,
                                    "src": "5675:20:10",
                                    "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": 3982,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5675:69:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5656:88:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3984,
                              "nodeType": "ExpressionStatement",
                              "src": "5656:88:10"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3987,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3909,
                            "src": "5764:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3997,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3918,
                                  "src": "5836:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                    "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                                  }
                                },
                                "id": 3998,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3546,
                                "src": "5836:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3994,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3991,
                                          "name": "accPichiPerShare",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3926,
                                          "src": "5791:16:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3988,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3918,
                                            "src": "5775:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                              "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                                            }
                                          },
                                          "id": 3989,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3544,
                                          "src": "5775:11:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3990,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "5775:15:10",
                                        "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": 3992,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5775:33:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3993,
                                      "name": "ACC_TOKEN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3577,
                                      "src": "5811:19:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5775:55:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3995,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5774:57:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3996,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "5774:61:10",
                              "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": 3999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5774:78:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5764:88:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4001,
                        "nodeType": "ExpressionStatement",
                        "src": "5764:88:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3902,
                    "nodeType": "StructuredDocumentation",
                    "src": "4861:195:10",
                    "text": "@dev View function to see pending Token\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending PICHI reward for a given user."
                  },
                  "functionSelector": "48e43af4",
                  "id": 4003,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3907,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3904,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4003,
                        "src": "5083:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3903,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5083:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3906,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4003,
                        "src": "5097:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3905,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5097:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5082:29:10"
                  },
                  "returnParameters": {
                    "id": 3910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3909,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4003,
                        "src": "5133:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3908,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5133:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5132:17:10"
                  },
                  "scope": 4146,
                  "src": "5061:798:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4033,
                    "nodeType": "Block",
                    "src": "6093:129:10",
                    "statements": [
                      {
                        "assignments": [
                          4011
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4011,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4033,
                            "src": "6103:11:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4010,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6103:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4014,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4012,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4007,
                            "src": "6117:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 4013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6117:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6103:25:10"
                      },
                      {
                        "body": {
                          "id": 4031,
                          "nodeType": "Block",
                          "src": "6172:44:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4026,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4007,
                                      "src": "6197:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 4028,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4027,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4016,
                                      "src": "6202:1:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6197:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4025,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4145,
                                  "src": "6186:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$3554_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct ComplexRewarder.PoolInfo memory)"
                                  }
                                },
                                "id": 4029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6186:19:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                  "typeString": "struct ComplexRewarder.PoolInfo memory"
                                }
                              },
                              "id": 4030,
                              "nodeType": "ExpressionStatement",
                              "src": "6186:19:10"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4019,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4016,
                            "src": "6158:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4020,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4011,
                            "src": "6162:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6158:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4032,
                        "initializationExpression": {
                          "assignments": [
                            4016
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4016,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 4032,
                              "src": "6143:9:10",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4015,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6143:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 4018,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6155:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6143:13:10"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 4023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6167:3:10",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 4022,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4016,
                              "src": "6169:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4024,
                          "nodeType": "ExpressionStatement",
                          "src": "6167:3:10"
                        },
                        "nodeType": "ForStatement",
                        "src": "6138:78:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4004,
                    "nodeType": "StructuredDocumentation",
                    "src": "5865:164:10",
                    "text": "@dev Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 4034,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4007,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4034,
                        "src": "6059:23:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4005,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6059:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4006,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "6059:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6058:25:10"
                  },
                  "returnParameters": {
                    "id": 4009,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6093:0:10"
                  },
                  "scope": 4146,
                  "src": "6034:188:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4144,
                    "nodeType": "Block",
                    "src": "6469:795:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4042,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4040,
                            "src": "6479:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4043,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3559,
                              "src": "6486:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                              }
                            },
                            "id": 4045,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4044,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4037,
                              "src": "6495:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6486:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                              "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                            }
                          },
                          "src": "6479:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                            "typeString": "struct ComplexRewarder.PoolInfo memory"
                          }
                        },
                        "id": 4047,
                        "nodeType": "ExpressionStatement",
                        "src": "6479:20:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 4052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4049,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4040,
                                  "src": "6517:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                    "typeString": "struct ComplexRewarder.PoolInfo memory"
                                  }
                                },
                                "id": 4050,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastRewardBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3551,
                                "src": "6517:20:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6541:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6517:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20646f6573206e6f74206578697374",
                              "id": 4053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6544:21:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5431fb1d188dcb2accc598cd1f0bfc0c6d8ac1fdd8f589953b20179c9a903b37",
                                "typeString": "literal_string \"Pool does not exist\""
                              },
                              "value": "Pool does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5431fb1d188dcb2accc598cd1f0bfc0c6d8ac1fdd8f589953b20179c9a903b37",
                                "typeString": "literal_string \"Pool does not exist\""
                              }
                            ],
                            "id": 4048,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6509:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6509:57:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4055,
                        "nodeType": "ExpressionStatement",
                        "src": "6509:57:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4056,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "6580:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6580:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4058,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4040,
                              "src": "6595:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                "typeString": "struct ComplexRewarder.PoolInfo memory"
                              }
                            },
                            "id": 4059,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3551,
                            "src": "6595:20:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "6580:35:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4143,
                        "nodeType": "IfStatement",
                        "src": "6576:682:10",
                        "trueBody": {
                          "id": 4142,
                          "nodeType": "Block",
                          "src": "6617:641:10",
                          "statements": [
                            {
                              "assignments": [
                                4062
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4062,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4142,
                                  "src": "6631:16:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4061,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6631:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4072,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4070,
                                    "name": "MASTERCHEF_V2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3579,
                                    "src": "6701:13:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4067,
                                        "name": "pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4037,
                                        "src": "6686:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4064,
                                            "name": "MASTERCHEF_V2",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3579,
                                            "src": "6663:13:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 4063,
                                          "name": "MasterChefV2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2091,
                                          "src": "6650:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_MasterChefV2_$2091_$",
                                            "typeString": "type(contract MasterChefV2)"
                                          }
                                        },
                                        "id": 4065,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6650:27:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                          "typeString": "contract MasterChefV2"
                                        }
                                      },
                                      "id": 4066,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lpToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 906,
                                      "src": "6650:35:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$337_$",
                                        "typeString": "function (uint256) view external returns (contract IERC20)"
                                      }
                                    },
                                    "id": 4068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6650:40:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "6650:50:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 4071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6650:65:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6631:84:10"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4073,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4062,
                                  "src": "6734:8:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6745:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6734:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 4117,
                              "nodeType": "IfStatement",
                              "src": "6730:336:10",
                              "trueBody": {
                                "id": 4116,
                                "nodeType": "Block",
                                "src": "6748:318:10",
                                "statements": [
                                  {
                                    "assignments": [
                                      4077
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4077,
                                        "mutability": "mutable",
                                        "name": "blocks",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 4116,
                                        "src": "6766:14:10",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4076,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6766:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4084,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4081,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4040,
                                            "src": "6800:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                              "typeString": "struct ComplexRewarder.PoolInfo memory"
                                            }
                                          },
                                          "id": 4082,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lastRewardBlock",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3551,
                                          "src": "6800:20:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4078,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "6783:5:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 4079,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "number",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "6783:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4080,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 599,
                                        "src": "6783:16:10",
                                        "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": 4083,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6783:38:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6766:55:10"
                                  },
                                  {
                                    "assignments": [
                                      4086
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4086,
                                        "mutability": "mutable",
                                        "name": "pichiReward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 4116,
                                        "src": "6839:19:10",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4085,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6839:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4097,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4096,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4092,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4040,
                                              "src": "6891:4:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                                "typeString": "struct ComplexRewarder.PoolInfo memory"
                                              }
                                            },
                                            "id": 4093,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3553,
                                            "src": "6891:15:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 4089,
                                                "name": "tokenPerBlock",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3574,
                                                "src": "6872:13:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4087,
                                                "name": "blocks",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4077,
                                                "src": "6861:6:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4088,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "6861:10:10",
                                              "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": 4090,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6861:25:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4091,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "6861:29:10",
                                          "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": 4094,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6861:46:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4095,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3572,
                                        "src": "6910:15:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6861:64:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6839:86:10"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4114,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4098,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4040,
                                          "src": "6943:4:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                            "typeString": "struct ComplexRewarder.PoolInfo memory"
                                          }
                                        },
                                        "id": 4100,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accPichiPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3549,
                                        "src": "6943:21:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 4109,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 4106,
                                                          "name": "ACC_TOKEN_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 3577,
                                                          "src": "7010:19:10",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 4104,
                                                          "name": "pichiReward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4086,
                                                          "src": "6994:11:10",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 4105,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 627,
                                                        "src": "6994:15:10",
                                                        "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": 4107,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "6994:36:10",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 4108,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4062,
                                                      "src": "7033:8:10",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "6994:47:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 4110,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "6993:49:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4111,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 653,
                                              "src": "6993:55:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 4112,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6993:57:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4101,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4040,
                                              "src": "6967:4:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                                "typeString": "struct ComplexRewarder.PoolInfo memory"
                                              }
                                            },
                                            "id": 4102,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accPichiPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3549,
                                            "src": "6967:21:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 4103,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 728,
                                          "src": "6967:25:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 4113,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6967:84:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "6943:108:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 4115,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6943:108:10"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4118,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4040,
                                    "src": "7079:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                      "typeString": "struct ComplexRewarder.PoolInfo memory"
                                    }
                                  },
                                  "id": 4120,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3551,
                                  "src": "7079:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4121,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "7102:5:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 4122,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "number",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7102:12:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4123,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "7102:17:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 4124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7102:19:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "7079:42:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 4126,
                              "nodeType": "ExpressionStatement",
                              "src": "7079:42:10"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4127,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3559,
                                    "src": "7135:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                      "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                                    }
                                  },
                                  "id": 4129,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4128,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4037,
                                    "src": "7144:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7135:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                    "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4130,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4040,
                                  "src": "7151:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                    "typeString": "struct ComplexRewarder.PoolInfo memory"
                                  }
                                },
                                "src": "7135:20:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                  "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                                }
                              },
                              "id": 4132,
                              "nodeType": "ExpressionStatement",
                              "src": "7135:20:10"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4134,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4037,
                                    "src": "7188:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4135,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4040,
                                      "src": "7193:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                        "typeString": "struct ComplexRewarder.PoolInfo memory"
                                      }
                                    },
                                    "id": 4136,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3551,
                                    "src": "7193:20:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4137,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4062,
                                    "src": "7215:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4138,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4040,
                                      "src": "7225:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                        "typeString": "struct ComplexRewarder.PoolInfo memory"
                                      }
                                    },
                                    "id": 4139,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accPichiPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3549,
                                    "src": "7225:21:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 4133,
                                  "name": "LogUpdatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3611,
                                  "src": "7174:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 4140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7174:73:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4141,
                              "nodeType": "EmitStatement",
                              "src": "7169:78:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4035,
                    "nodeType": "StructuredDocumentation",
                    "src": "6228:165:10",
                    "text": "@dev Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 4145,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4037,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4145,
                        "src": "6418:11:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4036,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6418:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6417:13:10"
                  },
                  "returnParameters": {
                    "id": 4041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4040,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4145,
                        "src": "6447:20:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                          "typeString": "struct ComplexRewarder.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4039,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3554,
                          "src": "6447:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_storage_ptr",
                            "typeString": "struct ComplexRewarder.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6446:22:10"
                  },
                  "scope": 4146,
                  "src": "6398:866:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 4147,
              "src": "399:6867:10"
            }
          ],
          "src": "33:7234:10"
        },
        "id": 10
      },
      "contracts/mocks/ComplexRewarderTime.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ComplexRewarderTime.sol",
          "exportedSymbols": {
            "ComplexRewarderTime": [
              4787
            ]
          },
          "id": 4788,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4148,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:11"
            },
            {
              "id": 4149,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "57:33:11"
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "../interfaces/IRewarder.sol",
              "id": 4150,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 3321,
              "src": "91:37:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 4151,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 554,
              "src": "129:75:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 4152,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 842,
              "src": "205:74:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "id": 4153,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 272,
              "src": "280:67:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/MasterChefV2.sol",
              "file": "../MasterChefV2.sol",
              "id": 4154,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 2092,
              "src": "348:29:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4156,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3320,
                    "src": "431:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 4157,
                  "nodeType": "InheritanceSpecifier",
                  "src": "431:9:11"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4158,
                    "name": "BoringOwnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "442:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnable_$271",
                      "typeString": "contract BoringOwnable"
                    }
                  },
                  "id": 4159,
                  "nodeType": "InheritanceSpecifier",
                  "src": "442:13:11"
                }
              ],
              "contractDependencies": [
                152,
                271,
                3320
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4155,
                "nodeType": "StructuredDocumentation",
                "src": "379:20:11",
                "text": "@author @0xKeno"
              },
              "fullyImplemented": true,
              "id": 4787,
              "linearizedBaseContracts": [
                4787,
                271,
                152,
                3320
              ],
              "name": "ComplexRewarderTime",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4162,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4160,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "468:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "462:29:11",
                  "typeName": {
                    "id": 4161,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "483:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 4165,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4163,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 751,
                    "src": "502:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$751",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "496:32:11",
                  "typeName": {
                    "id": 4164,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "520:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 4168,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4166,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "539:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "533:29:11",
                  "typeName": {
                    "contractScope": null,
                    "id": 4167,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "555:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 4170,
                  "mutability": "immutable",
                  "name": "rewardToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "568:36:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4169,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "568:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "canonicalName": "ComplexRewarderTime.UserInfo",
                  "id": 4175,
                  "members": [
                    {
                      "constant": false,
                      "id": 4172,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4175,
                      "src": "793:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4171,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "793:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4174,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4175,
                      "src": "817:18:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4173,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "817:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4787,
                  "src": "767:75:11",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ComplexRewarderTime.PoolInfo",
                  "id": 4182,
                  "members": [
                    {
                      "constant": false,
                      "id": 4177,
                      "mutability": "mutable",
                      "name": "accPichiPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4182,
                      "src": "1053:24:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 4176,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1053:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4179,
                      "mutability": "mutable",
                      "name": "lastRewardTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4182,
                      "src": "1087:21:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4178,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1087:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4181,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4182,
                      "src": "1118:17:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4180,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1118:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4787,
                  "src": "1027:115:11",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 4183,
                    "nodeType": "StructuredDocumentation",
                    "src": "1148:27:11",
                    "text": "@dev Info of each pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 4187,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1180:44:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                    "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo)"
                  },
                  "typeName": {
                    "id": 4186,
                    "keyType": {
                      "id": 4184,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1188:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1180:28:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                      "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4185,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4182,
                      "src": "1199:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$4182_storage_ptr",
                        "typeString": "struct ComplexRewarderTime.PoolInfo"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "69883b4e",
                  "id": 4190,
                  "mutability": "mutable",
                  "name": "poolIds",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1231:24:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4188,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1231:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4189,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1231:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 4191,
                    "nodeType": "StructuredDocumentation",
                    "src": "1262:49:11",
                    "text": "@dev Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 4197,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1316:64:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo))"
                  },
                  "typeName": {
                    "id": 4196,
                    "keyType": {
                      "id": 4192,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1324:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1316:48:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo))"
                    },
                    "valueType": {
                      "id": 4195,
                      "keyType": {
                        "id": 4193,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1343:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1335:28:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$",
                        "typeString": "mapping(address => struct ComplexRewarderTime.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 4194,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4175,
                        "src": "1354:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                          "typeString": "struct ComplexRewarderTime.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 4198,
                    "nodeType": "StructuredDocumentation",
                    "src": "1386:88:11",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "id": 4200,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1479:23:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4199,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1479:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "8f10369a",
                  "id": 4202,
                  "mutability": "mutable",
                  "name": "rewardPerSecond",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1509:30:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4201,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1509:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 4205,
                  "mutability": "constant",
                  "name": "ACC_TOKEN_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1545:51:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4203,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1545:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 4204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1592:4:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 4207,
                  "mutability": "immutable",
                  "name": "MASTERCHEF_V2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1603:39:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4206,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1603:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4217,
                  "name": "LogOnReward",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4209,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "1667:20:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1667:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4211,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "1689:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1689:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4213,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "1710:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1710:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4215,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "1726:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4214,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1726:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1666:79:11"
                  },
                  "src": "1649:97:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4223,
                  "name": "LogPoolAddition",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4219,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4223,
                        "src": "1773:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1773:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4221,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4223,
                        "src": "1794:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1794:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1772:41:11"
                  },
                  "src": "1751:63:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4229,
                  "name": "LogSetPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4225,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4229,
                        "src": "1836:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4224,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1836:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4227,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4229,
                        "src": "1857:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4226,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1857:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1835:41:11"
                  },
                  "src": "1819:58:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4239,
                  "name": "LogUpdatePool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4231,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1902:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4230,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1902:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4233,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardTime",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1923:21:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 4232,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1923:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4235,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1946:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4234,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1946:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4237,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accPichiPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1964:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4236,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1964:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1901:88:11"
                  },
                  "src": "1882:108:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4243,
                  "name": "LogRewardPerSecond",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4241,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "rewardPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4243,
                        "src": "2020:23:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4240,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2020:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2019:25:11"
                  },
                  "src": "1995:50:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4245,
                  "name": "LogInit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4244,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2063:2:11"
                  },
                  "src": "2050:16:11"
                },
                {
                  "body": {
                    "id": 4266,
                    "nodeType": "Block",
                    "src": "2192:127:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4254,
                            "name": "rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4170,
                            "src": "2202:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4255,
                            "name": "_rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4247,
                            "src": "2216:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2202:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4257,
                        "nodeType": "ExpressionStatement",
                        "src": "2202:26:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4258,
                            "name": "rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4202,
                            "src": "2238:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4259,
                            "name": "_rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4249,
                            "src": "2256:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2238:34:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4261,
                        "nodeType": "ExpressionStatement",
                        "src": "2238:34:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4262,
                            "name": "MASTERCHEF_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4207,
                            "src": "2282:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4263,
                            "name": "_MASTERCHEF_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4251,
                            "src": "2298:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2282:30:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4265,
                        "nodeType": "ExpressionStatement",
                        "src": "2282:30:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4267,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4247,
                        "mutability": "mutable",
                        "name": "_rewardToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4267,
                        "src": "2093:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4246,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "2093:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4249,
                        "mutability": "mutable",
                        "name": "_rewardPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4267,
                        "src": "2122:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2122:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4251,
                        "mutability": "mutable",
                        "name": "_MASTERCHEF_V2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4267,
                        "src": "2156:22:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4250,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2156:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2083:101:11"
                  },
                  "returnParameters": {
                    "id": 4253,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2192:0:11"
                  },
                  "scope": 4787,
                  "src": "2072:247:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3304
                  ],
                  "body": {
                    "id": 4354,
                    "nodeType": "Block",
                    "src": "2487:499:11",
                    "statements": [
                      {
                        "assignments": [
                          4284
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4284,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4354,
                            "src": "2497:20:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4283,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4182,
                              "src": "2497:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4182_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4288,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4286,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4269,
                              "src": "2531:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4285,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4786,
                            "src": "2520:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$4182_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct ComplexRewarderTime.PoolInfo memory)"
                            }
                          },
                          "id": 4287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2520:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                            "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2497:38:11"
                      },
                      {
                        "assignments": [
                          4290
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4290,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4354,
                            "src": "2545:21:11",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                              "typeString": "struct ComplexRewarderTime.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4289,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4175,
                              "src": "2545:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4296,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4291,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4197,
                              "src": "2569:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo storage ref))"
                              }
                            },
                            "id": 4293,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4292,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4269,
                              "src": "2578:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2569:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$",
                              "typeString": "mapping(address => struct ComplexRewarderTime.UserInfo storage ref)"
                            }
                          },
                          "id": 4295,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4294,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4271,
                            "src": "2583:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2569:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4175_storage",
                            "typeString": "struct ComplexRewarderTime.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2545:44:11"
                      },
                      {
                        "assignments": [
                          4298
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4298,
                            "mutability": "mutable",
                            "name": "pending",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4354,
                            "src": "2599:15:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4297,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2599:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4299,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2599:15:11"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4300,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "2628:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                              }
                            },
                            "id": 4301,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4172,
                            "src": "2628:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2642:1:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2628:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4328,
                        "nodeType": "IfStatement",
                        "src": "2624:190:11",
                        "trueBody": {
                          "id": 4327,
                          "nodeType": "Block",
                          "src": "2645:169:11",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4304,
                                  "name": "pending",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4298,
                                  "src": "2659:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4315,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4290,
                                        "src": "2736:4:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                          "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 4316,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "rewardDebt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4174,
                                      "src": "2736:15:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4312,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 4308,
                                                  "name": "pool",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4284,
                                                  "src": "2686:4:11",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                                    "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                                  }
                                                },
                                                "id": 4309,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "accPichiPerShare",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4177,
                                                "src": "2686:21:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 4305,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4290,
                                                  "src": "2670:4:11",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                                    "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                                                  }
                                                },
                                                "id": 4306,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "amount",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4172,
                                                "src": "2670:11:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4307,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "2670:15:11",
                                              "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": 4310,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2670:38:11",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 4311,
                                            "name": "ACC_TOKEN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4205,
                                            "src": "2711:19:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2670:60:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4313,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2669:62:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 599,
                                    "src": "2669:66:11",
                                    "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": 4317,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2669:83:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2659:93:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4319,
                              "nodeType": "ExpressionStatement",
                              "src": "2659:93:11"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4323,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4273,
                                    "src": "2791:2:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4324,
                                    "name": "pending",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4298,
                                    "src": "2795:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4320,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4170,
                                    "src": "2766:11:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "2766:24:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 4325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2766:37:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4326,
                              "nodeType": "ExpressionStatement",
                              "src": "2766:37:11"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4329,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "2823:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                              }
                            },
                            "id": 4331,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4172,
                            "src": "2823:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4332,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4277,
                            "src": "2837:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2823:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4334,
                        "nodeType": "ExpressionStatement",
                        "src": "2823:21:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4335,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "2854:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                              }
                            },
                            "id": 4337,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4174,
                            "src": "2854:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4340,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4284,
                                    "src": "2884:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                      "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                    }
                                  },
                                  "id": 4341,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accPichiPerShare",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4177,
                                  "src": "2884:21:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4338,
                                  "name": "lpToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4277,
                                  "src": "2872:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 627,
                                "src": "2872:11:11",
                                "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": 4342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2872:34:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4343,
                              "name": "ACC_TOKEN_PRECISION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4205,
                              "src": "2909:19:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2872:56:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2854:74:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4346,
                        "nodeType": "ExpressionStatement",
                        "src": "2854:74:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4348,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4271,
                              "src": "2955:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4349,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4269,
                              "src": "2962:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4350,
                              "name": "pending",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4298,
                              "src": "2967:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4351,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4273,
                              "src": "2976:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4347,
                            "name": "LogOnReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4217,
                            "src": "2943:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 4352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2943:36:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4353,
                        "nodeType": "EmitStatement",
                        "src": "2938:41:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ad3b6836",
                  "id": 4355,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4281,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4280,
                        "name": "onlyMCV2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4442,
                        "src": "2478:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2478:8:11"
                    }
                  ],
                  "name": "onPichiReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4279,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2469:8:11"
                  },
                  "parameters": {
                    "id": 4278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4269,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2357:11:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2357:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4271,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2378:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4270,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2378:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4273,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2401:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4272,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2401:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4275,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2421:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2421:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4277,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2438:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2438:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2347:112:11"
                  },
                  "returnParameters": {
                    "id": 4282,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2487:0:11"
                  },
                  "scope": 4787,
                  "src": "2325:661:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3319
                  ],
                  "body": {
                    "id": 4412,
                    "nodeType": "Block",
                    "src": "3175:267:11",
                    "statements": [
                      {
                        "assignments": [
                          4374
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4374,
                            "mutability": "mutable",
                            "name": "_rewardTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4412,
                            "src": "3185:29:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 4372,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "3185:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 4373,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3185:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4380,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3230:1:11",
                              "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"
                              }
                            ],
                            "id": 4377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3217:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (contract IERC20[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 4375,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "3221:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 4376,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3221:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            }
                          },
                          "id": 4379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3217:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3185:47:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4381,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "3242:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 4383,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3256:1:11",
                              "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": "3242:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 4384,
                                "name": "rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4170,
                                "src": "3262:11:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "id": 4385,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3261:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3242:32:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4387,
                        "nodeType": "ExpressionStatement",
                        "src": "3242:32:11"
                      },
                      {
                        "assignments": [
                          4392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4392,
                            "mutability": "mutable",
                            "name": "_rewardAmounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4412,
                            "src": "3284:31:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4390,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3284:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4391,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3284:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4398,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3332:1:11",
                              "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"
                              }
                            ],
                            "id": 4395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3318:13:11",
                            "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": 4393,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3322:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4394,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3322:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 4397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3318:16:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3284:50:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4399,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4392,
                              "src": "3344:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4401,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3359:1:11",
                              "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": "3344:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4403,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4357,
                                "src": "3377:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4404,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4359,
                                "src": "3382:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4402,
                              "name": "pendingToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4652,
                              "src": "3364:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (uint256,address) view returns (uint256)"
                              }
                            },
                            "id": 4405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3364:23:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3344:43:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4407,
                        "nodeType": "ExpressionStatement",
                        "src": "3344:43:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 4408,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "3405:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4409,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4392,
                              "src": "3420:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 4410,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3404:31:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 4370,
                        "id": 4411,
                        "nodeType": "Return",
                        "src": "3397:38:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 4413,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4363,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3095:8:11"
                  },
                  "parameters": {
                    "id": 4362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4357,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3024:11:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3024:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4359,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3045:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4358,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3045:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4361,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3067:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4360,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3067:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3014:66:11"
                  },
                  "returnParameters": {
                    "id": 4370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4366,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3113:28:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4364,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "3113:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4365,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3113:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4369,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3143:30:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4367,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3143:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4368,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3143:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3112:62:11"
                  },
                  "scope": 4787,
                  "src": "2992:450:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4429,
                    "nodeType": "Block",
                    "src": "3692:102:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4421,
                            "name": "rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4202,
                            "src": "3702:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4422,
                            "name": "_rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4416,
                            "src": "3720:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3702:34:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4424,
                        "nodeType": "ExpressionStatement",
                        "src": "3702:34:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4426,
                              "name": "_rewardPerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4416,
                              "src": "3770:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4425,
                            "name": "LogRewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4243,
                            "src": "3751:18:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 4427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3751:36:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4428,
                        "nodeType": "EmitStatement",
                        "src": "3746:41:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4414,
                    "nodeType": "StructuredDocumentation",
                    "src": "3448:168:11",
                    "text": "@dev Sets the pichi per second to be distributed. Can only be called by the owner.\n @param _rewardPerSecond The amount of Pichi to be distributed per second."
                  },
                  "functionSelector": "66da5815",
                  "id": 4430,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4419,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4418,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "3682:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3682:9:11"
                    }
                  ],
                  "name": "setRewardPerSecond",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4416,
                        "mutability": "mutable",
                        "name": "_rewardPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4430,
                        "src": "3649:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3649:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3648:26:11"
                  },
                  "returnParameters": {
                    "id": 4420,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3692:0:11"
                  },
                  "scope": 4787,
                  "src": "3621:173:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4441,
                    "nodeType": "Block",
                    "src": "3818:101:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4433,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3836:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3836:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4435,
                                "name": "MASTERCHEF_V2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4207,
                                "src": "3850:13:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3836:27:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2e",
                              "id": 4437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3865:35:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              },
                              "value": "Only MCV2 can call this function."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              }
                            ],
                            "id": 4432,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3828:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3828:73:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4439,
                        "nodeType": "ExpressionStatement",
                        "src": "3828:73:11"
                      },
                      {
                        "id": 4440,
                        "nodeType": "PlaceholderStatement",
                        "src": "3911:1:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4442,
                  "name": "onlyMCV2",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4431,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3818:0:11"
                  },
                  "src": "3800:119:11",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4453,
                    "nodeType": "Block",
                    "src": "4030:39:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4448,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4446,
                            "src": "4040:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4449,
                              "name": "poolIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4190,
                              "src": "4048:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 4450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4048:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4040:22:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4452,
                        "nodeType": "ExpressionStatement",
                        "src": "4040:22:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4443,
                    "nodeType": "StructuredDocumentation",
                    "src": "3925:42:11",
                    "text": "@dev Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 4454,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4444,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3991:2:11"
                  },
                  "returnParameters": {
                    "id": 4447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4446,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4454,
                        "src": "4015:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4015:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4014:15:11"
                  },
                  "scope": 4787,
                  "src": "3972:97:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4511,
                    "nodeType": "Block",
                    "src": "4379:397:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 4470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4465,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4187,
                                    "src": "4397:8:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                      "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                                    }
                                  },
                                  "id": 4467,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4466,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4459,
                                    "src": "4406:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4397:14:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                    "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                                  }
                                },
                                "id": 4468,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastRewardTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4179,
                                "src": "4397:29:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4430:1:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4397:34:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20616c726561647920657869737473",
                              "id": 4471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4433:21:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12db6f275306e49a55f39c487439bf20013b2e7f9ac363f83c1b47cbc0b35b95",
                                "typeString": "literal_string \"Pool already exists\""
                              },
                              "value": "Pool already exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12db6f275306e49a55f39c487439bf20013b2e7f9ac363f83c1b47cbc0b35b95",
                                "typeString": "literal_string \"Pool already exists\""
                              }
                            ],
                            "id": 4464,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4389:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4389:66:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4473,
                        "nodeType": "ExpressionStatement",
                        "src": "4389:66:11"
                      },
                      {
                        "assignments": [
                          4475
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4475,
                            "mutability": "mutable",
                            "name": "lastRewardTime",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4511,
                            "src": "4465:22:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4474,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4465:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4478,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4476,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "4490:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 4477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4490:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4465:40:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4479,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4200,
                            "src": "4515:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4482,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4457,
                                "src": "4553:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4480,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4200,
                                "src": "4533:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "4533:19:11",
                              "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": 4483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4533:31:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4515:49:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4485,
                        "nodeType": "ExpressionStatement",
                        "src": "4515:49:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4486,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4187,
                              "src": "4575:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                              }
                            },
                            "id": 4488,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4487,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "4584:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4575:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                              "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4490,
                                    "name": "allocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4457,
                                    "src": "4614:10:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "to64",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 679,
                                  "src": "4614:15:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint64)"
                                  }
                                },
                                "id": 4492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4614:17:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4493,
                                    "name": "lastRewardTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4475,
                                    "src": "4649:14:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4494,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "to64",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 679,
                                  "src": "4649:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint64)"
                                  }
                                },
                                "id": 4495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4649:21:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4690:1:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4489,
                              "name": "PoolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4182,
                              "src": "4592:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_PoolInfo_$4182_storage_ptr_$",
                                "typeString": "type(struct ComplexRewarderTime.PoolInfo storage pointer)"
                              }
                            },
                            "id": 4497,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "allocPoint",
                              "lastRewardTime",
                              "accPichiPerShare"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "4592:101:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                            }
                          },
                          "src": "4575:118:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                            "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                          }
                        },
                        "id": 4499,
                        "nodeType": "ExpressionStatement",
                        "src": "4575:118:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4503,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "4716:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4500,
                              "name": "poolIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4190,
                              "src": "4703:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 4502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4703:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 4504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4703:18:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4505,
                        "nodeType": "ExpressionStatement",
                        "src": "4703:18:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4507,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "4752:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4508,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4457,
                              "src": "4758:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4506,
                            "name": "LogPoolAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4223,
                            "src": "4736:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 4509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4736:33:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4510,
                        "nodeType": "EmitStatement",
                        "src": "4731:38:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4455,
                    "nodeType": "StructuredDocumentation",
                    "src": "4075:235:11",
                    "text": "@dev Add a new LP to the pool. Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _pid Pid on MCV2"
                  },
                  "functionSelector": "771602f7",
                  "id": 4512,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4462,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4461,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "4369:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4369:9:11"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4457,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4512,
                        "src": "4328:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4328:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4459,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4512,
                        "src": "4348:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4348:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4327:34:11"
                  },
                  "returnParameters": {
                    "id": 4463,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4379:0:11"
                  },
                  "scope": 4787,
                  "src": "4315:461:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4549,
                    "nodeType": "Block",
                    "src": "5072:198:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4522,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4200,
                            "src": "5082:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4531,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4517,
                                "src": "5151:11:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 4525,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4187,
                                        "src": "5120:8:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                          "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                                        }
                                      },
                                      "id": 4527,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 4526,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4515,
                                        "src": "5129:4:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5120:14:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                        "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 4528,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4181,
                                    "src": "5120:25:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4523,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4200,
                                    "src": "5100:15:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "5100:19:11",
                                  "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": 4529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5100:46:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "5100:50:11",
                              "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": 4532,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5100:63:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5082:81:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4534,
                        "nodeType": "ExpressionStatement",
                        "src": "5082:81:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4535,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4187,
                                "src": "5173:8:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                  "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                                }
                              },
                              "id": 4537,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4536,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4515,
                                "src": "5182:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5173:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                              }
                            },
                            "id": 4538,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4181,
                            "src": "5173:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4539,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4517,
                                "src": "5201:11:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 679,
                              "src": "5201:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 4541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5201:18:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "5173:46:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 4543,
                        "nodeType": "ExpressionStatement",
                        "src": "5173:46:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4545,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4515,
                              "src": "5245:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4546,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4517,
                              "src": "5251:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4544,
                            "name": "LogSetPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4229,
                            "src": "5234:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 4547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5234:29:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4548,
                        "nodeType": "EmitStatement",
                        "src": "5229:34:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4513,
                    "nodeType": "StructuredDocumentation",
                    "src": "4782:220:11",
                    "text": "@dev Update the given pool's PICHI allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool."
                  },
                  "functionSelector": "1ab06ee5",
                  "id": 4550,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4520,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4519,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5062:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5062:9:11"
                    }
                  ],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4515,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4550,
                        "src": "5020:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5020:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4517,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4550,
                        "src": "5034:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4516,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5034:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5019:35:11"
                  },
                  "returnParameters": {
                    "id": 4521,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5072:0:11"
                  },
                  "scope": 4787,
                  "src": "5007:263:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4651,
                    "nodeType": "Block",
                    "src": "5565:711:11",
                    "statements": [
                      {
                        "assignments": [
                          4561
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4561,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4651,
                            "src": "5575:20:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4560,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4182,
                              "src": "5575:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4182_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4565,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4562,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4187,
                            "src": "5598:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                              "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                            }
                          },
                          "id": 4564,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4563,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4553,
                            "src": "5607:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5598:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                            "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5575:37:11"
                      },
                      {
                        "assignments": [
                          4567
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4567,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4651,
                            "src": "5622:21:11",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                              "typeString": "struct ComplexRewarderTime.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4566,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4175,
                              "src": "5622:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4573,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4568,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4197,
                              "src": "5646:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo storage ref))"
                              }
                            },
                            "id": 4570,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4569,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4553,
                              "src": "5655:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5646:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$",
                              "typeString": "mapping(address => struct ComplexRewarderTime.UserInfo storage ref)"
                            }
                          },
                          "id": 4572,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4571,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4555,
                            "src": "5661:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5646:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4175_storage",
                            "typeString": "struct ComplexRewarderTime.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5622:45:11"
                      },
                      {
                        "assignments": [
                          4575
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4575,
                            "mutability": "mutable",
                            "name": "accPichiPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4651,
                            "src": "5677:24:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4574,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5677:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4578,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4576,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4561,
                            "src": "5704:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                            }
                          },
                          "id": 4577,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accPichiPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4177,
                          "src": "5704:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5677:48:11"
                      },
                      {
                        "assignments": [
                          4580
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4580,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4651,
                            "src": "5735:16:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4579,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5735:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4590,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4588,
                              "name": "MASTERCHEF_V2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4207,
                              "src": "5806:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4585,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4553,
                                  "src": "5790:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4582,
                                      "name": "MASTERCHEF_V2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4207,
                                      "src": "5767:13:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 4581,
                                    "name": "MasterChefV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2091,
                                    "src": "5754:12:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MasterChefV2_$2091_$",
                                      "typeString": "type(contract MasterChefV2)"
                                    }
                                  },
                                  "id": 4583,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5754:27:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                    "typeString": "contract MasterChefV2"
                                  }
                                },
                                "id": 4584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lpToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 906,
                                "src": "5754:35:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$337_$",
                                  "typeString": "function (uint256) view external returns (contract IERC20)"
                                }
                              },
                              "id": 4586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5754:41:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 4587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "5754:51:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 4589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5754:66:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5735:85:11"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4591,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "5834:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 4592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5834:15:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4593,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4561,
                                "src": "5852:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                  "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                }
                              },
                              "id": 4594,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardTime",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4179,
                              "src": "5852:19:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "5834:37:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4596,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4580,
                              "src": "5875:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5887:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5875:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5834:54:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4635,
                        "nodeType": "IfStatement",
                        "src": "5830:342:11",
                        "trueBody": {
                          "id": 4634,
                          "nodeType": "Block",
                          "src": "5890:282:11",
                          "statements": [
                            {
                              "assignments": [
                                4601
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4601,
                                  "mutability": "mutable",
                                  "name": "time",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4634,
                                  "src": "5904:12:11",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4600,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5904:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4608,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4605,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4561,
                                      "src": "5939:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                        "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                      }
                                    },
                                    "id": 4606,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4179,
                                    "src": "5939:19:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4602,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "5919:5:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 4603,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5919:15:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4604,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "5919:19:11",
                                  "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": 4607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5919:40:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5904:55:11"
                            },
                            {
                              "assignments": [
                                4610
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4610,
                                  "mutability": "mutable",
                                  "name": "pichiReward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4634,
                                  "src": "5973:19:11",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4609,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5973:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4621,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4616,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4561,
                                        "src": "6025:4:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                          "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                        }
                                      },
                                      "id": 4617,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4181,
                                      "src": "6025:15:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4613,
                                          "name": "rewardPerSecond",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4202,
                                          "src": "6004:15:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4611,
                                          "name": "time",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4601,
                                          "src": "5995:4:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4612,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "5995:8:11",
                                        "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": 4614,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5995:25:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4615,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 627,
                                    "src": "5995:29:11",
                                    "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": 4618,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5995:46:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4619,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4200,
                                  "src": "6044:15:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5995:64:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5973:86:11"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4622,
                                  "name": "accPichiPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "6073:16:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4630,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4627,
                                            "name": "ACC_TOKEN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4205,
                                            "src": "6129:19:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4625,
                                            "name": "pichiReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4610,
                                            "src": "6113:11:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4626,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "6113:15:11",
                                          "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": 4628,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6113:36:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4629,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4580,
                                        "src": "6152:8:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6113:47:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4623,
                                      "name": "accPichiPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4575,
                                      "src": "6092:16:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4624,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 577,
                                    "src": "6092:20:11",
                                    "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": 4631,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6092:69:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6073:88:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4633,
                              "nodeType": "ExpressionStatement",
                              "src": "6073:88:11"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4636,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4558,
                            "src": "6181:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4646,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4567,
                                  "src": "6253:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                    "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                                  }
                                },
                                "id": 4647,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4174,
                                "src": "6253:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4640,
                                          "name": "accPichiPerShare",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4575,
                                          "src": "6208:16:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4637,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4567,
                                            "src": "6192:4:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                              "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                                            }
                                          },
                                          "id": 4638,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4172,
                                          "src": "6192:11:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4639,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "6192:15:11",
                                        "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": 4641,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6192:33:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 4642,
                                      "name": "ACC_TOKEN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4205,
                                      "src": "6228:19:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6192:55:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4644,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6191:57:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "6191:61:11",
                              "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": 4648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6191:78:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6181:88:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4650,
                        "nodeType": "ExpressionStatement",
                        "src": "6181:88:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4551,
                    "nodeType": "StructuredDocumentation",
                    "src": "5276:195:11",
                    "text": "@dev View function to see pending Token\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending PICHI reward for a given user."
                  },
                  "functionSelector": "48e43af4",
                  "id": 4652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4553,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4652,
                        "src": "5498:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4552,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5498:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4555,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4652,
                        "src": "5512:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4554,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5512:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5497:29:11"
                  },
                  "returnParameters": {
                    "id": 4559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4558,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4652,
                        "src": "5548:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4557,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5548:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5547:17:11"
                  },
                  "scope": 4787,
                  "src": "5476:800:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4682,
                    "nodeType": "Block",
                    "src": "6510:129:11",
                    "statements": [
                      {
                        "assignments": [
                          4660
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4660,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4682,
                            "src": "6520:11:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4659,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6520:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4663,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4661,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4656,
                            "src": "6534:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 4662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6534:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6520:25:11"
                      },
                      {
                        "body": {
                          "id": 4680,
                          "nodeType": "Block",
                          "src": "6589:44:11",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4675,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4656,
                                      "src": "6614:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 4677,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4676,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4665,
                                      "src": "6619:1:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6614:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4674,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4786,
                                  "src": "6603:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$4182_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct ComplexRewarderTime.PoolInfo memory)"
                                  }
                                },
                                "id": 4678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6603:19:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                  "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                }
                              },
                              "id": 4679,
                              "nodeType": "ExpressionStatement",
                              "src": "6603:19:11"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4668,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4665,
                            "src": "6575:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4669,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4660,
                            "src": "6579:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6575:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4681,
                        "initializationExpression": {
                          "assignments": [
                            4665
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4665,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 4681,
                              "src": "6560:9:11",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4664,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6560:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 4667,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6572:1:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6560:13:11"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 4672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6584:3:11",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 4671,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4665,
                              "src": "6586:1:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4673,
                          "nodeType": "ExpressionStatement",
                          "src": "6584:3:11"
                        },
                        "nodeType": "ForStatement",
                        "src": "6555:78:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4653,
                    "nodeType": "StructuredDocumentation",
                    "src": "6282:164:11",
                    "text": "@dev Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 4683,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4656,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4683,
                        "src": "6476:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4654,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6476:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4655,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "6476:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6475:25:11"
                  },
                  "returnParameters": {
                    "id": 4658,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6510:0:11"
                  },
                  "scope": 4787,
                  "src": "6451:188:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4785,
                    "nodeType": "Block",
                    "src": "6886:731:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4691,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4689,
                            "src": "6896:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4692,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4187,
                              "src": "6903:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                              }
                            },
                            "id": 4694,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4693,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4686,
                              "src": "6912:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6903:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                              "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                            }
                          },
                          "src": "6896:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                            "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                          }
                        },
                        "id": 4696,
                        "nodeType": "ExpressionStatement",
                        "src": "6896:20:11"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4697,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "6930:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6930:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4699,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4689,
                              "src": "6948:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                              }
                            },
                            "id": 4700,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4179,
                            "src": "6948:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "6930:37:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4784,
                        "nodeType": "IfStatement",
                        "src": "6926:685:11",
                        "trueBody": {
                          "id": 4783,
                          "nodeType": "Block",
                          "src": "6969:642:11",
                          "statements": [
                            {
                              "assignments": [
                                4703
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4703,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4783,
                                  "src": "6983:16:11",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4702,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6983:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4713,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4711,
                                    "name": "MASTERCHEF_V2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4207,
                                    "src": "7053:13:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4708,
                                        "name": "pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4686,
                                        "src": "7038:3:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4705,
                                            "name": "MASTERCHEF_V2",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4207,
                                            "src": "7015:13:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 4704,
                                          "name": "MasterChefV2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2091,
                                          "src": "7002:12:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_MasterChefV2_$2091_$",
                                            "typeString": "type(contract MasterChefV2)"
                                          }
                                        },
                                        "id": 4706,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7002:27:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MasterChefV2_$2091",
                                          "typeString": "contract MasterChefV2"
                                        }
                                      },
                                      "id": 4707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lpToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 906,
                                      "src": "7002:35:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$337_$",
                                        "typeString": "function (uint256) view external returns (contract IERC20)"
                                      }
                                    },
                                    "id": 4709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7002:40:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "7002:50:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 4712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7002:65:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6983:84:11"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4714,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4703,
                                  "src": "7086:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7097:1:11",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7086:12:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 4758,
                              "nodeType": "IfStatement",
                              "src": "7082:336:11",
                              "trueBody": {
                                "id": 4757,
                                "nodeType": "Block",
                                "src": "7100:318:11",
                                "statements": [
                                  {
                                    "assignments": [
                                      4718
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4718,
                                        "mutability": "mutable",
                                        "name": "time",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 4757,
                                        "src": "7118:12:11",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4717,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7118:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4725,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4722,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4689,
                                            "src": "7153:4:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                              "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                            }
                                          },
                                          "id": 4723,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lastRewardTime",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4179,
                                          "src": "7153:19:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4719,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "7133:5:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 4720,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "7133:15:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4721,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 599,
                                        "src": "7133:19:11",
                                        "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": 4724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7133:40:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7118:55:11"
                                  },
                                  {
                                    "assignments": [
                                      4727
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4727,
                                        "mutability": "mutable",
                                        "name": "pichiReward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 4757,
                                        "src": "7191:19:11",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4726,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7191:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4738,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4737,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4733,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4689,
                                              "src": "7243:4:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                                "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                              }
                                            },
                                            "id": 4734,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4181,
                                            "src": "7243:15:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 4730,
                                                "name": "rewardPerSecond",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4202,
                                                "src": "7222:15:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4728,
                                                "name": "time",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4718,
                                                "src": "7213:4:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4729,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "7213:8:11",
                                              "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": 4731,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7213:25:11",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4732,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "7213:29:11",
                                          "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": 4735,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7213:46:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4736,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4200,
                                        "src": "7262:15:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7213:64:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7191:86:11"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4755,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4739,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4689,
                                          "src": "7295:4:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                            "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                          }
                                        },
                                        "id": 4741,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accPichiPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4177,
                                        "src": "7295:21:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 4750,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 4747,
                                                          "name": "ACC_TOKEN_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4205,
                                                          "src": "7362:19:11",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 4745,
                                                          "name": "pichiReward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4727,
                                                          "src": "7346:11:11",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 4746,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 627,
                                                        "src": "7346:15:11",
                                                        "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": 4748,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "7346:36:11",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 4749,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4703,
                                                      "src": "7385:8:11",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "7346:47:11",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 4751,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "7345:49:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4752,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 653,
                                              "src": "7345:55:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 4753,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7345:57:11",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4742,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4689,
                                              "src": "7319:4:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                                "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                              }
                                            },
                                            "id": 4743,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accPichiPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4177,
                                            "src": "7319:21:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 4744,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 728,
                                          "src": "7319:25:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 4754,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7319:84:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "7295:108:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 4756,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7295:108:11"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4759,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4689,
                                    "src": "7431:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                      "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                    }
                                  },
                                  "id": 4761,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4179,
                                  "src": "7431:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4762,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "7453:5:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 4763,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7453:15:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "7453:20:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 4765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7453:22:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "7431:44:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 4767,
                              "nodeType": "ExpressionStatement",
                              "src": "7431:44:11"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4768,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4187,
                                    "src": "7489:8:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                      "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                                    }
                                  },
                                  "id": 4770,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4769,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4686,
                                    "src": "7498:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7489:13:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                    "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4771,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4689,
                                  "src": "7505:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                    "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                  }
                                },
                                "src": "7489:20:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                  "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                                }
                              },
                              "id": 4773,
                              "nodeType": "ExpressionStatement",
                              "src": "7489:20:11"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4775,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4686,
                                    "src": "7542:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4776,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4689,
                                      "src": "7547:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                        "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                      }
                                    },
                                    "id": 4777,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4179,
                                    "src": "7547:19:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4778,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4703,
                                    "src": "7568:8:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4779,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4689,
                                      "src": "7578:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                        "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                      }
                                    },
                                    "id": 4780,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accPichiPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4177,
                                    "src": "7578:21:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 4774,
                                  "name": "LogUpdatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4239,
                                  "src": "7528:13:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 4781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7528:72:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4782,
                              "nodeType": "EmitStatement",
                              "src": "7523:77:11"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4684,
                    "nodeType": "StructuredDocumentation",
                    "src": "6645:165:11",
                    "text": "@dev Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 4786,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4686,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4786,
                        "src": "6835:11:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4685,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6835:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6834:13:11"
                  },
                  "returnParameters": {
                    "id": 4690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4689,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4786,
                        "src": "6864:20:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                          "typeString": "struct ComplexRewarderTime.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4688,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4182,
                          "src": "6864:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_storage_ptr",
                            "typeString": "struct ComplexRewarderTime.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6863:22:11"
                  },
                  "scope": 4787,
                  "src": "6815:802:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 4788,
              "src": "399:7220:11"
            }
          ],
          "src": "33:7587:11"
        },
        "id": 11
      },
      "contracts/mocks/RewarderBrokenMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/RewarderBrokenMock.sol",
          "exportedSymbols": {
            "RewarderBrokenMock": [
              4831
            ]
          },
          "id": 4832,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4789,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:12"
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "../interfaces/IRewarder.sol",
              "id": 4790,
              "nodeType": "ImportDirective",
              "scope": 4832,
              "sourceUnit": 3321,
              "src": "57:37:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4791,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3320,
                    "src": "127:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 4792,
                  "nodeType": "InheritanceSpecifier",
                  "src": "127:9:12"
                }
              ],
              "contractDependencies": [
                3320
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 4831,
              "linearizedBaseContracts": [
                4831,
                3320
              ],
              "name": "RewarderBrokenMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    3304
                  ],
                  "body": {
                    "id": 4809,
                    "nodeType": "Block",
                    "src": "275:25:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4806,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "285:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 4807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "285:8:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4808,
                        "nodeType": "ExpressionStatement",
                        "src": "285:8:12"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ad3b6836",
                  "id": 4810,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onPichiReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4804,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "266:8:12"
                  },
                  "parameters": {
                    "id": 4803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4794,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "175:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4793,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "175:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4796,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "192:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4795,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "192:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4798,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "209:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4797,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "209:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4800,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "226:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4799,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "226:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4802,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "243:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4801,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "243:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "165:91:12"
                  },
                  "returnParameters": {
                    "id": 4805,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "275:0:12"
                  },
                  "scope": 4831,
                  "src": "143:157:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3319
                  ],
                  "body": {
                    "id": 4829,
                    "nodeType": "Block",
                    "src": "501:25:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4826,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "511:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 4827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "511:8:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4828,
                        "nodeType": "ExpressionStatement",
                        "src": "511:8:12"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 4830,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4818,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "421:8:12"
                  },
                  "parameters": {
                    "id": 4817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4812,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "338:11:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4811,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "338:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4814,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "359:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4813,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "359:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4816,
                        "mutability": "mutable",
                        "name": "pichiAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "381:19:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4815,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "381:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "328:78:12"
                  },
                  "returnParameters": {
                    "id": 4825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4821,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "439:28:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4819,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "439:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4820,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "439:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4824,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "469:30:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4822,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "469:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4823,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "469:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "438:62:12"
                  },
                  "scope": 4831,
                  "src": "306:220:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4832,
              "src": "96:432:12"
            }
          ],
          "src": "33:496:12"
        },
        "id": 12
      },
      "contracts/mocks/RewarderMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/RewarderMock.sol",
          "exportedSymbols": {
            "RewarderMock": [
              5004
            ]
          },
          "id": 5005,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4833,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:13"
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "../interfaces/IRewarder.sol",
              "id": 4834,
              "nodeType": "ImportDirective",
              "scope": 5005,
              "sourceUnit": 3321,
              "src": "57:37:13",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 4835,
              "nodeType": "ImportDirective",
              "scope": 5005,
              "sourceUnit": 554,
              "src": "95:75:13",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 4836,
              "nodeType": "ImportDirective",
              "scope": 5005,
              "sourceUnit": 842,
              "src": "171:74:13",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4837,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3320,
                    "src": "272:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 4838,
                  "nodeType": "InheritanceSpecifier",
                  "src": "272:9:13"
                }
              ],
              "contractDependencies": [
                3320
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 5004,
              "linearizedBaseContracts": [
                5004,
                3320
              ],
              "name": "RewarderMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4841,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4839,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "294:10:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "288:29:13",
                  "typeName": {
                    "id": 4840,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "309:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 4844,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4842,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "328:11:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "322:29:13",
                  "typeName": {
                    "contractScope": null,
                    "id": 4843,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "344:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 4846,
                  "mutability": "immutable",
                  "name": "rewardMultiplier",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "356:42:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4845,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "356:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 4848,
                  "mutability": "immutable",
                  "name": "rewardToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "404:36:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4847,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "404:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 4851,
                  "mutability": "constant",
                  "name": "REWARD_TOKEN_DIVISOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "446:52:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4849,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "446:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653138",
                    "id": 4850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "494:4:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 4853,
                  "mutability": "immutable",
                  "name": "MASTERCHEF_V2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "504:39:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "504:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4874,
                    "nodeType": "Block",
                    "src": "671:129:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4862,
                            "name": "rewardMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4846,
                            "src": "681:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4863,
                            "name": "_rewardMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4855,
                            "src": "700:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "681:36:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4865,
                        "nodeType": "ExpressionStatement",
                        "src": "681:36:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4866,
                            "name": "rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4848,
                            "src": "727:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4867,
                            "name": "_rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4857,
                            "src": "741:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "727:26:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4869,
                        "nodeType": "ExpressionStatement",
                        "src": "727:26:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4870,
                            "name": "MASTERCHEF_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4853,
                            "src": "763:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4871,
                            "name": "_MASTERCHEF_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4859,
                            "src": "779:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "763:30:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4873,
                        "nodeType": "ExpressionStatement",
                        "src": "763:30:13"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4875,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4855,
                        "mutability": "mutable",
                        "name": "_rewardMultiplier",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4875,
                        "src": "571:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4854,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "571:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4857,
                        "mutability": "mutable",
                        "name": "_rewardToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4875,
                        "src": "606:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4856,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "606:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4859,
                        "mutability": "mutable",
                        "name": "_MASTERCHEF_V2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4875,
                        "src": "635:22:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4858,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "635:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "561:102:13"
                  },
                  "returnParameters": {
                    "id": 4861,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "671:0:13"
                  },
                  "scope": 5004,
                  "src": "550:250:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3304
                  ],
                  "body": {
                    "id": 4930,
                    "nodeType": "Block",
                    "src": "967:341:13",
                    "statements": [
                      {
                        "assignments": [
                          4892
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4892,
                            "mutability": "mutable",
                            "name": "pendingReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4930,
                            "src": "977:21:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4891,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "977:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4899,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4895,
                                "name": "rewardMultiplier",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4846,
                                "src": "1017:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4893,
                                "name": "pichiAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4883,
                                "src": "1001:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 627,
                              "src": "1001:15:13",
                              "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": 4896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1001:33:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4897,
                            "name": "REWARD_TOKEN_DIVISOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4851,
                            "src": "1037:20:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1001:56:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "977:80:13"
                      },
                      {
                        "assignments": [
                          4901
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4901,
                            "mutability": "mutable",
                            "name": "rewardBal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4930,
                            "src": "1067:17:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4900,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1067:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4909,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4906,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1117:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RewarderMock_$5004",
                                    "typeString": "contract RewarderMock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_RewarderMock_$5004",
                                    "typeString": "contract RewarderMock"
                                  }
                                ],
                                "id": 4905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1109:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4904,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1109:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1109:13:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4902,
                              "name": "rewardToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4848,
                              "src": "1087:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 4903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "1087:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 4908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1087:36:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1067:56:13"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4910,
                            "name": "pendingReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4892,
                            "src": "1137:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4911,
                            "name": "rewardBal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4901,
                            "src": "1153:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1137:25:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4928,
                          "nodeType": "Block",
                          "src": "1234:68:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4924,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4881,
                                    "src": "1273:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4925,
                                    "name": "pendingReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4892,
                                    "src": "1277:13:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4921,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4848,
                                    "src": "1248:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "1248:24:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 4926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1248:43:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4927,
                              "nodeType": "ExpressionStatement",
                              "src": "1248:43:13"
                            }
                          ]
                        },
                        "id": 4929,
                        "nodeType": "IfStatement",
                        "src": "1133:169:13",
                        "trueBody": {
                          "id": 4920,
                          "nodeType": "Block",
                          "src": "1164:64:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4916,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4881,
                                    "src": "1203:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4917,
                                    "name": "rewardBal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4901,
                                    "src": "1207:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4913,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4848,
                                    "src": "1178:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "1178:24:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 4918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1178:39:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4919,
                              "nodeType": "ExpressionStatement",
                              "src": "1178:39:13"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ad3b6836",
                  "id": 4931,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4889,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4888,
                        "name": "onlyMCV2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5003,
                        "src": "958:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "958:8:13"
                    }
                  ],
                  "name": "onPichiReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4887,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "949:8:13"
                  },
                  "parameters": {
                    "id": 4886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4877,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "838:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4879,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "855:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4878,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "855:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4881,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "877:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4880,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "877:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4883,
                        "mutability": "mutable",
                        "name": "pichiAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "897:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4882,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "897:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4885,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "926:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4884,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "926:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "828:111:13"
                  },
                  "returnParameters": {
                    "id": 4890,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "967:0:13"
                  },
                  "scope": 5004,
                  "src": "806:502:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3319
                  ],
                  "body": {
                    "id": 4990,
                    "nodeType": "Block",
                    "src": "1509:300:13",
                    "statements": [
                      {
                        "assignments": [
                          4950
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4950,
                            "mutability": "mutable",
                            "name": "_rewardTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4990,
                            "src": "1519:29:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 4948,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "1519:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 4949,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1519:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4956,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1564:1:13",
                              "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"
                              }
                            ],
                            "id": 4953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1551:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (contract IERC20[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 4951,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "1555:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 4952,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1555:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            }
                          },
                          "id": 4955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1551:15:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1519:47:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4957,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4950,
                              "src": "1576:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 4959,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1590:1:13",
                              "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": "1576:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 4960,
                                "name": "rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4848,
                                "src": "1596:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "id": 4961,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1595:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1576:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4963,
                        "nodeType": "ExpressionStatement",
                        "src": "1576:32:13"
                      },
                      {
                        "assignments": [
                          4968
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4968,
                            "mutability": "mutable",
                            "name": "_rewardAmounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4990,
                            "src": "1618:31:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4966,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1618:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4967,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1618:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4974,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1666:1:13",
                              "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"
                              }
                            ],
                            "id": 4971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1652:13:13",
                            "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": 4969,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1656:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4970,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1656:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 4973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1652:16:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1618:50:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4975,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4968,
                              "src": "1678:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4977,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1693:1:13",
                              "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": "1678:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4980,
                                  "name": "rewardMultiplier",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4846,
                                  "src": "1714:16:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4978,
                                  "name": "pichiAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4937,
                                  "src": "1698:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4979,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 627,
                                "src": "1698:15:13",
                                "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": 4981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1698:33:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4982,
                              "name": "REWARD_TOKEN_DIVISOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4851,
                              "src": "1734:20:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1698:56:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1678:76:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4985,
                        "nodeType": "ExpressionStatement",
                        "src": "1678:76:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 4986,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4950,
                              "src": "1772:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4987,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4968,
                              "src": "1787:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 4988,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1771:31:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 4946,
                        "id": 4989,
                        "nodeType": "Return",
                        "src": "1764:38:13"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 4991,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4939,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1429:8:13"
                  },
                  "parameters": {
                    "id": 4938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4933,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1346:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1346:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4935,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1367:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4934,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1367:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4937,
                        "mutability": "mutable",
                        "name": "pichiAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1389:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4936,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1389:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1336:78:13"
                  },
                  "returnParameters": {
                    "id": 4946,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4942,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1447:28:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4940,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "1447:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4941,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1447:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4945,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1477:30:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4943,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1477:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4944,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1477:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1446:62:13"
                  },
                  "scope": 5004,
                  "src": "1314:495:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5002,
                    "nodeType": "Block",
                    "src": "1833:101:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4994,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1851:3:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4995,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1851:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4996,
                                "name": "MASTERCHEF_V2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4853,
                                "src": "1865:13:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1851:27:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2e",
                              "id": 4998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1880:35:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              },
                              "value": "Only MCV2 can call this function."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              }
                            ],
                            "id": 4993,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1843:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1843:73:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5000,
                        "nodeType": "ExpressionStatement",
                        "src": "1843:73:13"
                      },
                      {
                        "id": 5001,
                        "nodeType": "PlaceholderStatement",
                        "src": "1926:1:13"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5003,
                  "name": "onlyMCV2",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4992,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1833:0:13"
                  },
                  "src": "1815:119:13",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5005,
              "src": "247:1689:13"
            }
          ],
          "src": "33:1904:13"
        },
        "id": 13
      }
    }
  }
}
