{
  "_format": "hh-sol-artifact-1",
  "contractName": "VBEP20Harness",
  "sourceName": "contracts/test/VBEP20Harness.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "underlying_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "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": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimalsInternal",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "faucet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "underlying",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526005805460ff1916601217905534801561001c575f80fd5b50604051610f26380380610f2683398101604081905261003b916101d4565b8383838282600361004c8382610345565b5060046100598282610345565b5050600580546001600160a01b03909616610100026001600160a81b031990961660ff9093169290921794909417905550610404945050505050565b634e487b7160e01b5f52604160045260245ffd5b601f19601f83011681018181106001600160401b03821117156100ce576100ce610095565b6040525050565b5f6100df60405190565b90506100eb82826100a9565b919050565b5f6001600160401b0382111561010857610108610095565b601f19601f83011660200192915050565b8281835e505f910152565b5f610136610131846100f0565b6100d5565b905082815260208101848484011115610150576101505f80fd5b61015b848285610119565b509392505050565b5f82601f830112610175576101755f80fd5b8151610185848260208601610124565b949350505050565b60ff81165b811461019c575f80fd5b50565b80516101aa8161018d565b92915050565b5f6001600160a01b0382166101aa565b610192816101b0565b80516101aa816101c0565b5f805f80608085870312156101ea576101ea5f80fd5b84516001600160401b03811115610202576102025f80fd5b61020e87828801610163565b94505060208501516001600160401b0381111561022c5761022c5f80fd5b61023887828801610163565b93505060406102498782880161019f565b925050606061025a878288016101c9565b91505092959194509250565b634e487b7160e01b5f52602260045260245ffd5b60028104600182168061028e57607f821691505b6020821081036102a0576102a0610266565b50919050565b5f6101aa6102b18381565b90565b6102bd836102a6565b81545f1960089490940293841b1916921b91909117905550565b5f6102e38184846102b4565b505050565b81811015610302576102fa5f826102d7565b6001016102e8565b5050565b601f8211156102e3575f818152602090206020601f8501048101602085101561032c5750805b61033e6020601f8601048301826102e8565b5050505050565b81516001600160401b0381111561035e5761035e610095565b610368825461027a565b610373828285610306565b6020601f8311600181146103a5575f841561038e5750858201515b5f19600886021c19811660028602178655506103fc565b5f85815260208120601f198616915b828110156103d457888501518255602094850194600190920191016103b4565b868310156103ef57848901515f19601f89166008021c191682555b6001600288020188555050505b505050505050565b610b15806104115f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063579158971161008857806395d89b411161006357806395d89b41146101e1578063a457c2d7146101e9578063a9059cbb146101fc578063dd62ed3e1461020f575f80fd5b8063579158971461017f5780636f307dc31461019457806370a08231146101b9575f80fd5b806323b872dd116100c357806323b872dd14610138578063313ce5671461014b578063395093511461015f5780634511bf6b14610172575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd14610127575b5f80fd5b6100f1610222565b6040516100fe9190610660565b60405180910390f35b61011a6101153660046106b7565b6102b2565b6040516100fe91906106fb565b6002545b6040516100fe919061070f565b61011a61014636600461071d565b6102cb565b60055460ff165b6040516100fe9190610772565b61011a61016d3660046106b7565b6102ee565b6005546101529060ff1681565b61019261018d366004610780565b61030f565b005b6005546101ac9061010090046001600160a01b031681565b6040516100fe91906107af565b61012b6101c73660046107bd565b6001600160a01b03165f9081526020819052604090205490565b6100f161031c565b61011a6101f73660046106b7565b61032b565b61011a61020a3660046106b7565b610370565b61012b61021d3660046107db565b61037d565b6060600380546102319061081f565b80601f016020809104026020016040519081016040528092919081815260200182805461025d9061081f565b80156102a85780601f1061027f576101008083540402835291602001916102a8565b820191905f5260205f20905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b5f336102bf8185856103a7565b60019150505b92915050565b5f336102d885828561045a565b6102e38585856104a2565b506001949350505050565b5f336102bf818585610300838361037d565b61030a919061085f565b6103a7565b6103193382610590565b50565b6060600480546102319061081f565b5f3381610338828661037d565b9050838110156103635760405162461bcd60e51b815260040161035a906108b6565b60405180910390fd5b6102e382868684036103a7565b5f336102bf8185856104a2565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103cd5760405162461bcd60e51b815260040161035a90610906565b6001600160a01b0382166103f35760405162461bcd60e51b815260040161035a90610954565b6001600160a01b038084165f8181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061044d90859061070f565b60405180910390a3505050565b5f610465848461037d565b90505f19811461049c578181101561048f5760405162461bcd60e51b815260040161035a9061099a565b61049c84848484036103a7565b50505050565b6001600160a01b0383166104c85760405162461bcd60e51b815260040161035a906109eb565b6001600160a01b0382166104ee5760405162461bcd60e51b815260040161035a90610a3a565b6001600160a01b0383165f90815260208190526040902054818110156105265760405162461bcd60e51b815260040161035a90610a8c565b6001600160a01b038085165f8181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061058390869061070f565b60405180910390a361049c565b6001600160a01b0382166105b65760405162461bcd60e51b815260040161035a90610acf565b8060025f8282546105c7919061085f565b90915550506001600160a01b0382165f81815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061061890859061070f565b60405180910390a35050565b8281835e505f910152565b5f610638825190565b80845260208401935061064f818560208601610624565b601f01601f19169290920192915050565b60208082528101610671818461062f565b9392505050565b5f6001600160a01b0382166102c5565b61069181610678565b8114610319575f80fd5b80356102c581610688565b80610691565b80356102c5816106a6565b5f80604083850312156106cb576106cb5f80fd5b5f6106d6858561069b565b92505060206106e7858286016106ac565b9150509250929050565b8015155b82525050565b602081016102c582846106f1565b806106f5565b602081016102c58284610709565b5f805f60608486031215610732576107325f80fd5b5f61073d868661069b565b935050602061074e8682870161069b565b925050604061075f868287016106ac565b9150509250925092565b60ff81166106f5565b602081016102c58284610769565b5f60208284031215610793576107935f80fd5b5f61079e84846106ac565b949350505050565b6106f581610678565b602081016102c582846107a6565b5f602082840312156107d0576107d05f80fd5b5f61079e848461069b565b5f80604083850312156107ef576107ef5f80fd5b5f6107fa858561069b565b92505060206106e78582860161069b565b634e487b7160e01b5f52602260045260245ffd5b60028104600182168061083357607f821691505b6020821081036108455761084561080b565b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102c5576102c561084b565b602581525f602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77815264207a65726f60d81b602082015291505b5060400190565b602080825281016102c581610872565b602481525f602082017f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152637265737360e01b602082015291506108af565b602080825281016102c5816108c6565b602281525f602082017f45524332303a20617070726f766520746f20746865207a65726f206164647265815261737360f01b602082015291506108af565b602080825281016102c581610916565b601d81525f602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000815291505b5060200190565b602080825281016102c581610964565b602581525f602082017f45524332303a207472616e736665722066726f6d20746865207a65726f206164815264647265737360d81b602082015291506108af565b602080825281016102c5816109aa565b602381525f602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281526265737360e81b602082015291506108af565b602080825281016102c5816109fb565b602681525f602082017f45524332303a207472616e7366657220616d6f756e7420657863656564732062815265616c616e636560d01b602082015291506108af565b602080825281016102c581610a4a565b601f81525f602082017f45524332303a206d696e7420746f20746865207a65726f20616464726573730081529150610993565b602080825281016102c581610a9c56fea26469706673582212201acc62b729b451166c6c4a8ef1452483b32dce86b8bd7f766788b1991ea2e60d64736f6c63430008190033",
  "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063579158971161008857806395d89b411161006357806395d89b41146101e1578063a457c2d7146101e9578063a9059cbb146101fc578063dd62ed3e1461020f575f80fd5b8063579158971461017f5780636f307dc31461019457806370a08231146101b9575f80fd5b806323b872dd116100c357806323b872dd14610138578063313ce5671461014b578063395093511461015f5780634511bf6b14610172575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd14610127575b5f80fd5b6100f1610222565b6040516100fe9190610660565b60405180910390f35b61011a6101153660046106b7565b6102b2565b6040516100fe91906106fb565b6002545b6040516100fe919061070f565b61011a61014636600461071d565b6102cb565b60055460ff165b6040516100fe9190610772565b61011a61016d3660046106b7565b6102ee565b6005546101529060ff1681565b61019261018d366004610780565b61030f565b005b6005546101ac9061010090046001600160a01b031681565b6040516100fe91906107af565b61012b6101c73660046107bd565b6001600160a01b03165f9081526020819052604090205490565b6100f161031c565b61011a6101f73660046106b7565b61032b565b61011a61020a3660046106b7565b610370565b61012b61021d3660046107db565b61037d565b6060600380546102319061081f565b80601f016020809104026020016040519081016040528092919081815260200182805461025d9061081f565b80156102a85780601f1061027f576101008083540402835291602001916102a8565b820191905f5260205f20905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b5f336102bf8185856103a7565b60019150505b92915050565b5f336102d885828561045a565b6102e38585856104a2565b506001949350505050565b5f336102bf818585610300838361037d565b61030a919061085f565b6103a7565b6103193382610590565b50565b6060600480546102319061081f565b5f3381610338828661037d565b9050838110156103635760405162461bcd60e51b815260040161035a906108b6565b60405180910390fd5b6102e382868684036103a7565b5f336102bf8185856104a2565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103cd5760405162461bcd60e51b815260040161035a90610906565b6001600160a01b0382166103f35760405162461bcd60e51b815260040161035a90610954565b6001600160a01b038084165f8181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061044d90859061070f565b60405180910390a3505050565b5f610465848461037d565b90505f19811461049c578181101561048f5760405162461bcd60e51b815260040161035a9061099a565b61049c84848484036103a7565b50505050565b6001600160a01b0383166104c85760405162461bcd60e51b815260040161035a906109eb565b6001600160a01b0382166104ee5760405162461bcd60e51b815260040161035a90610a3a565b6001600160a01b0383165f90815260208190526040902054818110156105265760405162461bcd60e51b815260040161035a90610a8c565b6001600160a01b038085165f8181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061058390869061070f565b60405180910390a361049c565b6001600160a01b0382166105b65760405162461bcd60e51b815260040161035a90610acf565b8060025f8282546105c7919061085f565b90915550506001600160a01b0382165f81815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061061890859061070f565b60405180910390a35050565b8281835e505f910152565b5f610638825190565b80845260208401935061064f818560208601610624565b601f01601f19169290920192915050565b60208082528101610671818461062f565b9392505050565b5f6001600160a01b0382166102c5565b61069181610678565b8114610319575f80fd5b80356102c581610688565b80610691565b80356102c5816106a6565b5f80604083850312156106cb576106cb5f80fd5b5f6106d6858561069b565b92505060206106e7858286016106ac565b9150509250929050565b8015155b82525050565b602081016102c582846106f1565b806106f5565b602081016102c58284610709565b5f805f60608486031215610732576107325f80fd5b5f61073d868661069b565b935050602061074e8682870161069b565b925050604061075f868287016106ac565b9150509250925092565b60ff81166106f5565b602081016102c58284610769565b5f60208284031215610793576107935f80fd5b5f61079e84846106ac565b949350505050565b6106f581610678565b602081016102c582846107a6565b5f602082840312156107d0576107d05f80fd5b5f61079e848461069b565b5f80604083850312156107ef576107ef5f80fd5b5f6107fa858561069b565b92505060206106e78582860161069b565b634e487b7160e01b5f52602260045260245ffd5b60028104600182168061083357607f821691505b6020821081036108455761084561080b565b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102c5576102c561084b565b602581525f602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77815264207a65726f60d81b602082015291505b5060400190565b602080825281016102c581610872565b602481525f602082017f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152637265737360e01b602082015291506108af565b602080825281016102c5816108c6565b602281525f602082017f45524332303a20617070726f766520746f20746865207a65726f206164647265815261737360f01b602082015291506108af565b602080825281016102c581610916565b601d81525f602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000815291505b5060200190565b602080825281016102c581610964565b602581525f602082017f45524332303a207472616e736665722066726f6d20746865207a65726f206164815264647265737360d81b602082015291506108af565b602080825281016102c5816109aa565b602381525f602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281526265737360e81b602082015291506108af565b602080825281016102c5816109fb565b602681525f602082017f45524332303a207472616e7366657220616d6f756e7420657863656564732062815265616c616e636560d01b602082015291506108af565b602080825281016102c581610a4a565b601f81525f602082017f45524332303a206d696e7420746f20746865207a65726f20616464726573730081529150610993565b602080825281016102c581610a9c56fea26469706673582212201acc62b729b451166c6c4a8ef1452483b32dce86b8bd7f766788b1991ea2e60d64736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
