{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockMathLibrary",
  "sourceName": "contracts/mock/MockMathLibrary.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_x",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_y",
          "type": "uint256"
        }
      ],
      "name": "checkMultOverflow",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "fpart",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "p",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "q",
          "type": "uint256"
        }
      ],
      "name": "ln",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_x",
          "type": "uint256"
        }
      ],
      "name": "log2ForSmallNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_p",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_q",
          "type": "uint256"
        }
      ],
      "name": "log2Int",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_p",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_q",
          "type": "uint256"
        }
      ],
      "name": "logBase2",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "max",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "min",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "x",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "y",
          "type": "uint256"
        }
      ],
      "name": "rdiv",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "x",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "y",
          "type": "uint256"
        }
      ],
      "name": "rmul",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "base",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "exp",
          "type": "uint256"
        }
      ],
      "name": "rpow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "exp",
          "type": "uint256"
        }
      ],
      "name": "rpowe",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "base",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "exp",
          "type": "uint256"
        }
      ],
      "name": "rpowi",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "y",
          "type": "uint256"
        }
      ],
      "name": "sqrt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "toFP",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "toInt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610a70806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806367457022116100975780637ae2b5c7116100665780637ae2b5c7146102ab5780638f907195146102ce57806391ad3f69146102f1578063d8c96bb11461031457610100565b8063674570221461022b578063677342ce1461024e5780636d5433e61461026b5780636e141ac41461028e57610100565b80630fb30a6f116100d35780630fb30a6f1461019757806344aa6836146101b457806344f7787f146101d15780635111249e146101f457610100565b8063029801b11461010557806305b33920146101345780630abff592146101515780630e2286d314610174575b600080fd5b6101226004803603602081101561011b57600080fd5b5035610337565b60408051918252519081900360200190f35b6101226004803603602081101561014a57600080fd5b503561034a565b6101226004803603604081101561016757600080fd5b5080359060200135610355565b6101226004803603604081101561018a57600080fd5b508035906020013561036a565b610122600480360360208110156101ad57600080fd5b5035610376565b610122600480360360208110156101ca57600080fd5b5035610381565b610122600480360360408110156101e757600080fd5b508035906020013561038c565b6102176004803603604081101561020a57600080fd5b5080359060200135610398565b604080519115158252519081900360200190f35b6101226004803603604081101561024157600080fd5b50803590602001356103a4565b6101226004803603602081101561026457600080fd5b50356103b0565b6101226004803603604081101561028157600080fd5b50803590602001356103bb565b610122600480360360208110156102a457600080fd5b50356103c7565b610122600480360360408110156102c157600080fd5b50803590602001356103d2565b610122600480360360408110156102e457600080fd5b50803590602001356103de565b6101226004803603604081101561030757600080fd5b50803590602001356103ea565b6101226004803603604081101561032a57600080fd5b50803590602001356103f6565b600061034282610402565b90505b919050565b600061034282610476565b600061036183836104f4565b90505b92915050565b60006103618383610527565b60006103428261054f565b600061034282610558565b60006103618383610562565b600061036183836105c4565b600061036183836105e9565b60006103428261060c565b6000610361838361065d565b600061034282610674565b6000610361838361067e565b6000610361838361068d565b60006103618383610754565b6000610361838361085b565b600080600160281b815b9181019161042e82610429876104246001860161054f565b610527565b6105e9565b91508161043a5761046d565b806101f414156104655760405162461bcd60e51b815260040161045c906109ec565b60405180910390fd5b60010161040c565b50909392505050565b600080600160281b650200000000008180861080159061049557508186105b6104b15760405162461bcd60e51b815260040161045c906109c8565b60285b80156104e95783878802816104c557fe5b0496506002820491508287106104e057600287049650938101935b600019016104b4565b509295945050505050565b6000808083858161050157fe5b0490505b801561051b576001919091019060029004610505565b50600019019392505050565b60006103618261054961053e86600160281b6108ae565b6002865b0490610907565b90610961565b600160281b0290565b600160281b900490565b6000690177c17eb2ae5edd211c69021e19e0c9bab2400000826105858686610754565b905061059183826105c4565b156105ae5760405162461bcd60e51b815260040161045c906109c8565b81818402816105b957fe5b049695505050505050565b6000816105d357506000610364565b8282838502816105df57fe5b0414159392505050565b6000610361600160281b61054961060086866108ae565b6002600160281b610542565b6000600382111561064f575080600160028204015b818110156106495780915060028182858161063857fe5b04018161064157fe5b049050610621565b50610345565b811561034557506001919050565b60008183101561066d5781610361565b5090919050565b64ffffffffff1690565b600081831061066d5781610361565b60008161069f5750600160281b610364565b826106ac57506000610364565b60006106b783610674565b905080830360006106d0866106cb84610558565b61085b565b90506000600160281b87101561071c576000610701856104296106f7600160281b8c610527565b600160281b610562565b9050610714600160281b61042483610402565b91505061073f565b6000610730856104298a600160281b610562565b905061073b81610402565b9150505b61074982826105e9565b979650505050505050565b6000808284111561076c5761076984846104f4565b90505b600160c81b600160281b820211156107965760405162461bcd60e51b815260040161045c906109c8565b6107a484600160281b6105c4565b156107c15760405162461bcd60e51b815260040161045c906109c8565b6107cf81600160281b6105c4565b156107ec5760405162461bcd60e51b815260040161045c906109c8565b6107f96001821b846105c4565b156108165760405162461bcd60e51b815260040161045c906109c8565b600083821b600160281b86028161082957fe5b049050600061083782610476565b9050600160c81b81111561084757fe5b600160281b92909202909101949350505050565b6000806002830661087057600160281b610872565b835b90506002830492505b82156103615761088b84856105e9565b935060028306156108a3576108a081856105e9565b90505b60028304925061087b565b6000826108bd57506000610364565b828202828482816108ca57fe5b04146103615760405162461bcd60e51b8152600401808060200182810382526021815260200180610a1a6021913960400191505060405180910390fd5b600082820183811015610361576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008082116109b7576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816109c057fe5b049392505050565b6020808252600a908201526926a0aa242fa2a92927a960b11b604082015260600190565b60208082526013908201527252504f57455f534c4f575f434f4e564552474560681b60408201526060019056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122041d6feab0de589afad5c84eeb978ca6a0875a45bb861b23c843e674f3f00595b64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c806367457022116100975780637ae2b5c7116100665780637ae2b5c7146102ab5780638f907195146102ce57806391ad3f69146102f1578063d8c96bb11461031457610100565b8063674570221461022b578063677342ce1461024e5780636d5433e61461026b5780636e141ac41461028e57610100565b80630fb30a6f116100d35780630fb30a6f1461019757806344aa6836146101b457806344f7787f146101d15780635111249e146101f457610100565b8063029801b11461010557806305b33920146101345780630abff592146101515780630e2286d314610174575b600080fd5b6101226004803603602081101561011b57600080fd5b5035610337565b60408051918252519081900360200190f35b6101226004803603602081101561014a57600080fd5b503561034a565b6101226004803603604081101561016757600080fd5b5080359060200135610355565b6101226004803603604081101561018a57600080fd5b508035906020013561036a565b610122600480360360208110156101ad57600080fd5b5035610376565b610122600480360360208110156101ca57600080fd5b5035610381565b610122600480360360408110156101e757600080fd5b508035906020013561038c565b6102176004803603604081101561020a57600080fd5b5080359060200135610398565b604080519115158252519081900360200190f35b6101226004803603604081101561024157600080fd5b50803590602001356103a4565b6101226004803603602081101561026457600080fd5b50356103b0565b6101226004803603604081101561028157600080fd5b50803590602001356103bb565b610122600480360360208110156102a457600080fd5b50356103c7565b610122600480360360408110156102c157600080fd5b50803590602001356103d2565b610122600480360360408110156102e457600080fd5b50803590602001356103de565b6101226004803603604081101561030757600080fd5b50803590602001356103ea565b6101226004803603604081101561032a57600080fd5b50803590602001356103f6565b600061034282610402565b90505b919050565b600061034282610476565b600061036183836104f4565b90505b92915050565b60006103618383610527565b60006103428261054f565b600061034282610558565b60006103618383610562565b600061036183836105c4565b600061036183836105e9565b60006103428261060c565b6000610361838361065d565b600061034282610674565b6000610361838361067e565b6000610361838361068d565b60006103618383610754565b6000610361838361085b565b600080600160281b815b9181019161042e82610429876104246001860161054f565b610527565b6105e9565b91508161043a5761046d565b806101f414156104655760405162461bcd60e51b815260040161045c906109ec565b60405180910390fd5b60010161040c565b50909392505050565b600080600160281b650200000000008180861080159061049557508186105b6104b15760405162461bcd60e51b815260040161045c906109c8565b60285b80156104e95783878802816104c557fe5b0496506002820491508287106104e057600287049650938101935b600019016104b4565b509295945050505050565b6000808083858161050157fe5b0490505b801561051b576001919091019060029004610505565b50600019019392505050565b60006103618261054961053e86600160281b6108ae565b6002865b0490610907565b90610961565b600160281b0290565b600160281b900490565b6000690177c17eb2ae5edd211c69021e19e0c9bab2400000826105858686610754565b905061059183826105c4565b156105ae5760405162461bcd60e51b815260040161045c906109c8565b81818402816105b957fe5b049695505050505050565b6000816105d357506000610364565b8282838502816105df57fe5b0414159392505050565b6000610361600160281b61054961060086866108ae565b6002600160281b610542565b6000600382111561064f575080600160028204015b818110156106495780915060028182858161063857fe5b04018161064157fe5b049050610621565b50610345565b811561034557506001919050565b60008183101561066d5781610361565b5090919050565b64ffffffffff1690565b600081831061066d5781610361565b60008161069f5750600160281b610364565b826106ac57506000610364565b60006106b783610674565b905080830360006106d0866106cb84610558565b61085b565b90506000600160281b87101561071c576000610701856104296106f7600160281b8c610527565b600160281b610562565b9050610714600160281b61042483610402565b91505061073f565b6000610730856104298a600160281b610562565b905061073b81610402565b9150505b61074982826105e9565b979650505050505050565b6000808284111561076c5761076984846104f4565b90505b600160c81b600160281b820211156107965760405162461bcd60e51b815260040161045c906109c8565b6107a484600160281b6105c4565b156107c15760405162461bcd60e51b815260040161045c906109c8565b6107cf81600160281b6105c4565b156107ec5760405162461bcd60e51b815260040161045c906109c8565b6107f96001821b846105c4565b156108165760405162461bcd60e51b815260040161045c906109c8565b600083821b600160281b86028161082957fe5b049050600061083782610476565b9050600160c81b81111561084757fe5b600160281b92909202909101949350505050565b6000806002830661087057600160281b610872565b835b90506002830492505b82156103615761088b84856105e9565b935060028306156108a3576108a081856105e9565b90505b60028304925061087b565b6000826108bd57506000610364565b828202828482816108ca57fe5b04146103615760405162461bcd60e51b8152600401808060200182810382526021815260200180610a1a6021913960400191505060405180910390fd5b600082820183811015610361576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008082116109b7576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816109c057fe5b049392505050565b6020808252600a908201526926a0aa242fa2a92927a960b11b604082015260600190565b60208082526013908201527252504f57455f534c4f575f434f4e564552474560681b60408201526060019056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122041d6feab0de589afad5c84eeb978ca6a0875a45bb861b23c843e674f3f00595b64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
