{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockFlashAttacker",
  "sourceName": "contracts/mocks/MockFlashAttacker.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_margin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_quoteToken",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrow",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "baseAmount",
          "type": "uint256"
        }
      ],
      "name": "attack1",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrow",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "baseAmount",
          "type": "uint256"
        }
      ],
      "name": "attack2",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseToken",
      "outputs": [
        {
          "internalType": "contract ERC20FlashMint",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "margin",
      "outputs": [
        {
          "internalType": "contract IMargin",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "onFlashLoan",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quoteToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051610b85380380610b8583398101604081905261002f9161008d565b600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549190931691161790556100cf565b80516001600160a01b038116811461008857600080fd5b919050565b6000806000606084860312156100a1578283fd5b6100aa84610071565b92506100b860208501610071565b91506100c660408501610071565b90509250925092565b610aa7806100de6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063217a4b701461006757806323e30c8b146100975780638f76691a146100b8578063919a7c48146100cb578063ba210961146100e0578063c55dae63146100f3575b600080fd5b60025461007a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100aa6100a5366004610810565b610106565b60405190815260200161008e565b60015461007a906001600160a01b031681565b6100de6100d9366004610954565b610696565b005b6100de6100ee366004610954565b6107c1565b60005461007a906001600160a01b031681565b60006001600160a01b038716301461013e5760405162461bcd60e51b8152602060048201526000602482015260440160405180910390fd5b60008061014d848601866108d8565b905060008160200151600181111561017557634e487b7160e01b600052602160045260246000fd5b14156103c357600154815160405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529089169063a9059cbb90604401602060405180830381600087803b1580156101cc57600080fd5b505af11580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020491906108b1565b50600154815160405163cf70cb6960e01b815230600482015260248101919091526001600160a01b039091169063cf70cb6990604401600060405180830381600087803b15801561025457600080fd5b505af1158015610268573d6000803e3d6000fd5b505060015483516001600160a01b03909116925063d67fb553915030908590610292906002610a3c565b6040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260ff90911660248301526044820152606401602060405180830381600087803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031a919061093c565b5060015481516001600160a01b039091169063742fe1f890309061033f906002610a3c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561038557600080fd5b505af1158015610399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bd919061093c565b506105cf565b600154815160405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529089169063a9059cbb90604401602060405180830381600087803b15801561041457600080fd5b505af1158015610428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044c91906108b1565b50600154815160405163cf70cb6960e01b815230600482015260248101919091526001600160a01b039091169063cf70cb6990604401600060405180830381600087803b15801561049c57600080fd5b505af11580156104b0573d6000803e3d6000fd5b505060015483516001600160a01b03909116925063d67fb5539150309085906104da906002610a3c565b6040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260ff90911660248301526044820152606401602060405180830381600087803b15801561052a57600080fd5b505af115801561053e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610562919061093c565b506001805460405163a8fe8f8160e01b81523060048201819052602482015260448101929092526001600160a01b03169063a8fe8f8190606401600060405180830381600087803b1580156105b657600080fd5b505af11580156105ca573d6000803e3d6000fd5b505050505b6001600160a01b03881663095ea7b3896105e9898b610a24565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561062f57600080fd5b505af1158015610643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066791906108b1565b507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd99998505050505050505050565b6000546040516340c10f1960e01b81523060048201526103e860248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156106e357600080fd5b505af11580156106f7573d6000803e3d6000fd5b5050600054604080518082019091528481526001600160a01b039091169250635cffe9de91503090839086906020810160015b905260405161073c91906020016109eb565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161076a9493929190610975565b602060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bc91906108b1565b505050565b60008054604080518082019091528381526001600160a01b0390911691635cffe9de91309184918791602082019061072a565b80356001600160a01b038116811461080b57600080fd5b919050565b60008060008060008060a08789031215610828578182fd5b610831876107f4565b955061083f602088016107f4565b94506040870135935060608701359250608087013567ffffffffffffffff80821115610869578384fd5b818901915089601f83011261087c578384fd5b81358181111561088a578485fd5b8a602082850101111561089b578485fd5b6020830194508093505050509295509295509295565b6000602082840312156108c2578081fd5b815180151581146108d1578182fd5b9392505050565b6000604082840312156108e9578081fd5b6040516040810181811067ffffffffffffffff8211171561091857634e487b7160e01b83526041600452602483fd5b60405282358152602083013560028110610930578283fd5b60208201529392505050565b60006020828403121561094d578081fd5b5051919050565b60008060408385031215610966578182fd5b50508035926020909101359150565b600060018060a01b0380871683526020818716818501528560408501526080606085015284519150816080850152825b828110156109c15785810182015185820160a0015281016109a5565b828111156109d2578360a084870101525b5050601f01601f19169190910160a00195945050505050565b815181526020820151604082019060028110610a1757634e487b7160e01b600052602160045260246000fd5b8060208401525092915050565b60008219821115610a3757610a37610a5b565b500190565b6000816000190483118215151615610a5657610a56610a5b565b500290565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220f9447ca72862961b796f525586da825e7df696307b2b1fa2ccae6d94401702e064736f6c63430008020033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063217a4b701461006757806323e30c8b146100975780638f76691a146100b8578063919a7c48146100cb578063ba210961146100e0578063c55dae63146100f3575b600080fd5b60025461007a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100aa6100a5366004610810565b610106565b60405190815260200161008e565b60015461007a906001600160a01b031681565b6100de6100d9366004610954565b610696565b005b6100de6100ee366004610954565b6107c1565b60005461007a906001600160a01b031681565b60006001600160a01b038716301461013e5760405162461bcd60e51b8152602060048201526000602482015260440160405180910390fd5b60008061014d848601866108d8565b905060008160200151600181111561017557634e487b7160e01b600052602160045260246000fd5b14156103c357600154815160405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529089169063a9059cbb90604401602060405180830381600087803b1580156101cc57600080fd5b505af11580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020491906108b1565b50600154815160405163cf70cb6960e01b815230600482015260248101919091526001600160a01b039091169063cf70cb6990604401600060405180830381600087803b15801561025457600080fd5b505af1158015610268573d6000803e3d6000fd5b505060015483516001600160a01b03909116925063d67fb553915030908590610292906002610a3c565b6040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260ff90911660248301526044820152606401602060405180830381600087803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031a919061093c565b5060015481516001600160a01b039091169063742fe1f890309061033f906002610a3c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561038557600080fd5b505af1158015610399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bd919061093c565b506105cf565b600154815160405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529089169063a9059cbb90604401602060405180830381600087803b15801561041457600080fd5b505af1158015610428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044c91906108b1565b50600154815160405163cf70cb6960e01b815230600482015260248101919091526001600160a01b039091169063cf70cb6990604401600060405180830381600087803b15801561049c57600080fd5b505af11580156104b0573d6000803e3d6000fd5b505060015483516001600160a01b03909116925063d67fb5539150309085906104da906002610a3c565b6040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260ff90911660248301526044820152606401602060405180830381600087803b15801561052a57600080fd5b505af115801561053e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610562919061093c565b506001805460405163a8fe8f8160e01b81523060048201819052602482015260448101929092526001600160a01b03169063a8fe8f8190606401600060405180830381600087803b1580156105b657600080fd5b505af11580156105ca573d6000803e3d6000fd5b505050505b6001600160a01b03881663095ea7b3896105e9898b610a24565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561062f57600080fd5b505af1158015610643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066791906108b1565b507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd99998505050505050505050565b6000546040516340c10f1960e01b81523060048201526103e860248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156106e357600080fd5b505af11580156106f7573d6000803e3d6000fd5b5050600054604080518082019091528481526001600160a01b039091169250635cffe9de91503090839086906020810160015b905260405161073c91906020016109eb565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161076a9493929190610975565b602060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bc91906108b1565b505050565b60008054604080518082019091528381526001600160a01b0390911691635cffe9de91309184918791602082019061072a565b80356001600160a01b038116811461080b57600080fd5b919050565b60008060008060008060a08789031215610828578182fd5b610831876107f4565b955061083f602088016107f4565b94506040870135935060608701359250608087013567ffffffffffffffff80821115610869578384fd5b818901915089601f83011261087c578384fd5b81358181111561088a578485fd5b8a602082850101111561089b578485fd5b6020830194508093505050509295509295509295565b6000602082840312156108c2578081fd5b815180151581146108d1578182fd5b9392505050565b6000604082840312156108e9578081fd5b6040516040810181811067ffffffffffffffff8211171561091857634e487b7160e01b83526041600452602483fd5b60405282358152602083013560028110610930578283fd5b60208201529392505050565b60006020828403121561094d578081fd5b5051919050565b60008060408385031215610966578182fd5b50508035926020909101359150565b600060018060a01b0380871683526020818716818501528560408501526080606085015284519150816080850152825b828110156109c15785810182015185820160a0015281016109a5565b828111156109d2578360a084870101525b5050601f01601f19169190910160a00195945050505050565b815181526020820151604082019060028110610a1757634e487b7160e01b600052602160045260246000fd5b8060208401525092915050565b60008219821115610a3757610a37610a5b565b500190565b6000816000190483118215151615610a5657610a56610a5b565b500290565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220f9447ca72862961b796f525586da825e7df696307b2b1fa2ccae6d94401702e064736f6c63430008020033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
