{
	"id": "d39f916be5faf64a238cff1072527f03",
	"_format": "hh-sol-build-info-1",
	"solcVersion": "0.8.13",
	"solcLongVersion": "0.8.13+commit.abaa5c0e",
	"input": {
		"language": "Solidity",
		"sources": {
			"contracts/Libraries.sol": {
				"content": "\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nlibrary SafeMath {\n    function add(uint x, uint y) internal pure returns (uint) {\n        uint z = x + y;\n        require(z >= x, \"uint overflow\");\n\n        return z;\n    }\n}\n\nlibrary Math {\n    function multiply(uint a, uint b) internal pure returns (uint) {\n        uint256 c = a * b;\n        require(c / a == b, \"SafeMath: multiplication overflow\");\n\n        return c;\n\n    }\n}\n\ncontract TestSafeMathAsLibrary {\n    function testMultiply(uint a, uint b) public pure returns (uint) {\n        return Math.multiply(a, b);\n    }\n}\n\ncontract TestSafeMathMonkeyPatch {\n    using SafeMath for uint;\n\n    function testAdd(uint x, uint y) public pure returns (uint) {\n        return x.add(y);\n    }\n}"
			}
		},
		"settings": {
			"optimizer": {
				"enabled": true,
				"runs": 200
			},
			"outputSelection": {
				"*": {
					"": [
						"ast"
					],
					"*": [
						"abi",
						"metadata",
						"devdoc",
						"userdoc",
						"storageLayout",
						"evm.legacyAssembly",
						"evm.bytecode",
						"evm.deployedBytecode",
						"evm.methodIdentifiers",
						"evm.gasEstimates",
						"evm.assembly"
					]
				}
			}
		}
	},
	"output": {
		"contracts": {
			"contracts/Libraries.sol": {
				"Math": {
					"abi": [],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Libraries.sol\":236:440  library Math {... */\n  dataSize(sub_0)\n  dataOffset(sub_0)\n  0x0b\n  dup3\n  dup3\n  dup3\n  codecopy\n  dup1\n  mload\n  0x00\n  byte\n  0x73\n  eq\n  tag_1\n  jumpi\n  mstore(0x00, shl(0xe0, 0x4e487b71))\n  mstore(0x04, 0x00)\n  revert(0x00, 0x24)\ntag_1:\n  mstore(0x00, address)\n  0x73\n  dup2\n  mstore8\n  dup3\n  dup2\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Libraries.sol\":236:440  library Math {... */\n      eq(address, deployTimeAddress())\n      mstore(0x40, 0x80)\n      0x00\n      dup1\n      revert\n\n    auxdata: 0xa2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033",
							"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 CODESIZE 0x2F EQ LOG1 0xE PUSH24 0xB75C9BCBBF637A206E36259CD67C85210647C42B83685D28 PUSH9 0xDD64736F6C63430008 0xD STOP CALLER ",
							"sourceMap": "236:204:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;236:204:0;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033",
							"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0x2F EQ LOG1 0xE PUSH24 0xB75C9BCBBF637A206E36259CD67C85210647C42B83685D28 PUSH9 0xDD64736F6C63430008 0xD STOP CALLER ",
							"sourceMap": "236:204:0:-:0;;;;;;;;"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "17200",
								"executionCost": "103",
								"totalCost": "17303"
							},
							"internal": {
								"multiply(uint256,uint256)": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "B"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "DUP3",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "DUP3",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "DUP3",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "MLOAD",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "BYTE",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "73"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "EQ",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": -1,
									"end": -1,
									"name": "PUSH",
									"source": -1,
									"value": "4E487B71"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "PUSH",
									"source": -1,
									"value": "E0"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "SHL",
									"source": -1
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "4"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "24"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "ADDRESS",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "PUSH",
									"source": 0,
									"value": "73"
								},
								{
									"begin": 236,
									"end": 440,
									"name": "DUP2",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "MSTORE8",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "DUP3",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "DUP2",
									"source": 0
								},
								{
									"begin": 236,
									"end": 440,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033",
									".code": [
										{
											"begin": 236,
											"end": 440,
											"name": "PUSHDEPLOYADDRESS",
											"source": 0
										},
										{
											"begin": 236,
											"end": 440,
											"name": "ADDRESS",
											"source": 0
										},
										{
											"begin": 236,
											"end": 440,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 236,
											"end": 440,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 236,
											"end": 440,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 236,
											"end": 440,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 236,
											"end": 440,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 236,
											"end": 440,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 236,
											"end": 440,
											"name": "REVERT",
											"source": 0
										}
									]
								}
							}
						},
						"methodIdentifiers": {}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27\",\"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				},
				"SafeMath": {
					"abi": [],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Libraries.sol\":59:234  library SafeMath {... */\n  dataSize(sub_0)\n  dataOffset(sub_0)\n  0x0b\n  dup3\n  dup3\n  dup3\n  codecopy\n  dup1\n  mload\n  0x00\n  byte\n  0x73\n  eq\n  tag_1\n  jumpi\n  mstore(0x00, shl(0xe0, 0x4e487b71))\n  mstore(0x04, 0x00)\n  revert(0x00, 0x24)\ntag_1:\n  mstore(0x00, address)\n  0x73\n  dup2\n  mstore8\n  dup3\n  dup2\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Libraries.sol\":59:234  library SafeMath {... */\n      eq(address, deployTimeAddress())\n      mstore(0x40, 0x80)\n      0x00\n      dup1\n      revert\n\n    auxdata: 0xa26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033",
							"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0x4C10F52BC906EF5A3859C6146CCC440EB31DF000531E0B881E236646E9B31764 PUSH20 0x6F6C634300080D00330000000000000000000000 ",
							"sourceMap": "59:175:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:175:0;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033",
							"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0x4C10F52BC906EF5A3859C6146CCC440EB31DF000531E0B881E236646E9B31764 PUSH20 0x6F6C634300080D00330000000000000000000000 ",
							"sourceMap": "59:175:0:-:0;;;;;;;;"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "17200",
								"executionCost": "103",
								"totalCost": "17303"
							},
							"internal": {
								"add(uint256,uint256)": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "B"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "DUP3",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "DUP3",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "DUP3",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "MLOAD",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "BYTE",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "73"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "EQ",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": -1,
									"end": -1,
									"name": "PUSH",
									"source": -1,
									"value": "4E487B71"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "PUSH",
									"source": -1,
									"value": "E0"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "SHL",
									"source": -1
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "4"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "24"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "ADDRESS",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "PUSH",
									"source": 0,
									"value": "73"
								},
								{
									"begin": 59,
									"end": 234,
									"name": "DUP2",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "MSTORE8",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "DUP3",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "DUP2",
									"source": 0
								},
								{
									"begin": 59,
									"end": 234,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033",
									".code": [
										{
											"begin": 59,
											"end": 234,
											"name": "PUSHDEPLOYADDRESS",
											"source": 0
										},
										{
											"begin": 59,
											"end": 234,
											"name": "ADDRESS",
											"source": 0
										},
										{
											"begin": 59,
											"end": 234,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 59,
											"end": 234,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 59,
											"end": 234,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 59,
											"end": 234,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 59,
											"end": 234,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 59,
											"end": 234,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 59,
											"end": 234,
											"name": "REVERT",
											"source": 0
										}
									]
								}
							}
						},
						"methodIdentifiers": {}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27\",\"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				},
				"TestSafeMathAsLibrary": {
					"abi": [
						{
							"inputs": [
								{
									"internalType": "uint256",
									"name": "a",
									"type": "uint256"
								},
								{
									"internalType": "uint256",
									"name": "b",
									"type": "uint256"
								}
							],
							"name": "testMultiply",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"stateMutability": "pure",
							"type": "function"
						}
					],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Libraries.sol\":442:589  contract TestSafeMathAsLibrary {... */\n  mstore(0x40, 0x80)\n  callvalue\n  dup1\n  iszero\n  tag_1\n  jumpi\n  0x00\n  dup1\n  revert\ntag_1:\n  pop\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Libraries.sol\":442:589  contract TestSafeMathAsLibrary {... */\n      mstore(0x40, 0x80)\n      callvalue\n      dup1\n      iszero\n      tag_1\n      jumpi\n      0x00\n      dup1\n      revert\n    tag_1:\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0x042116f1\n      eq\n      tag_3\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/Libraries.sol\":479:587  function testMultiply(uint a, uint b) public pure returns (uint) {... */\n    tag_3:\n      tag_4\n      tag_5\n      calldatasize\n      0x04\n      tag_6\n      jump\t// in\n    tag_5:\n      tag_7\n      jump\t// in\n    tag_4:\n      mload(0x40)\n        /* \"#utility.yul\":413:438   */\n      swap1\n      dup2\n      mstore\n        /* \"#utility.yul\":401:403   */\n      0x20\n        /* \"#utility.yul\":386:404   */\n      add\n        /* \"contracts/Libraries.sol\":479:587  function testMultiply(uint a, uint b) public pure returns (uint) {... */\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n    tag_7:\n        /* \"contracts/Libraries.sol\":538:542  uint */\n      0x00\n        /* \"contracts/Libraries.sol\":561:580  Math.multiply(a, b) */\n      tag_11\n        /* \"contracts/Libraries.sol\":575:576  a */\n      dup4\n        /* \"contracts/Libraries.sol\":578:579  b */\n      dup4\n        /* \"contracts/Libraries.sol\":561:574  Math.multiply */\n      tag_12\n        /* \"contracts/Libraries.sol\":561:580  Math.multiply(a, b) */\n      jump\t// in\n    tag_11:\n        /* \"contracts/Libraries.sol\":554:580  return Math.multiply(a, b) */\n      swap4\n        /* \"contracts/Libraries.sol\":479:587  function testMultiply(uint a, uint b) public pure returns (uint) {... */\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n        /* \"contracts/Libraries.sol\":255:438  function multiply(uint a, uint b) internal pure returns (uint) {... */\n    tag_12:\n        /* \"contracts/Libraries.sol\":312:316  uint */\n      0x00\n      dup1\n        /* \"contracts/Libraries.sol\":340:345  a * b */\n      tag_14\n        /* \"contracts/Libraries.sol\":344:345  b */\n      dup4\n        /* \"contracts/Libraries.sol\":340:341  a */\n      dup6\n        /* \"contracts/Libraries.sol\":340:345  a * b */\n      tag_15\n      jump\t// in\n    tag_14:\n        /* \"contracts/Libraries.sol\":328:345  uint256 c = a * b */\n      swap1\n      pop\n        /* \"contracts/Libraries.sol\":372:373  b */\n      dup3\n        /* \"contracts/Libraries.sol\":363:368  c / a */\n      tag_16\n        /* \"contracts/Libraries.sol\":367:368  a */\n      dup6\n        /* \"contracts/Libraries.sol\":328:345  uint256 c = a * b */\n      dup4\n        /* \"contracts/Libraries.sol\":363:368  c / a */\n      tag_17\n      jump\t// in\n    tag_16:\n        /* \"contracts/Libraries.sol\":363:373  c / a == b */\n      eq\n        /* \"contracts/Libraries.sol\":355:411  require(c / a == b, \"SafeMath: multiplication overflow\") */\n      tag_11\n      jumpi\n      mload(0x40)\n      shl(0xe5, 0x461bcd)\n      dup2\n      mstore\n        /* \"#utility.yul\":1143:1145   */\n      0x20\n        /* \"contracts/Libraries.sol\":355:411  require(c / a == b, \"SafeMath: multiplication overflow\") */\n      0x04\n      dup3\n      add\n        /* \"#utility.yul\":1125:1146   */\n      mstore\n        /* \"#utility.yul\":1182:1184   */\n      0x21\n        /* \"#utility.yul\":1162:1180   */\n      0x24\n      dup3\n      add\n        /* \"#utility.yul\":1155:1185   */\n      mstore\n        /* \"#utility.yul\":1221:1255   */\n      0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f\n        /* \"#utility.yul\":1201:1219   */\n      0x44\n      dup3\n      add\n        /* \"#utility.yul\":1194:1256   */\n      mstore\n      shl(0xf8, 0x77)\n        /* \"#utility.yul\":1272:1290   */\n      0x64\n      dup3\n      add\n        /* \"#utility.yul\":1265:1296   */\n      mstore\n        /* \"#utility.yul\":1313:1332   */\n      0x84\n      add\n        /* \"contracts/Libraries.sol\":355:411  require(c / a == b, \"SafeMath: multiplication overflow\") */\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      revert\n        /* \"#utility.yul\":14:262   */\n    tag_6:\n        /* \"#utility.yul\":82:88   */\n      0x00\n        /* \"#utility.yul\":90:96   */\n      dup1\n        /* \"#utility.yul\":143:145   */\n      0x40\n        /* \"#utility.yul\":131:140   */\n      dup4\n        /* \"#utility.yul\":122:129   */\n      dup6\n        /* \"#utility.yul\":118:141   */\n      sub\n        /* \"#utility.yul\":114:146   */\n      slt\n        /* \"#utility.yul\":111:163   */\n      iszero\n      tag_23\n      jumpi\n        /* \"#utility.yul\":159:160   */\n      0x00\n        /* \"#utility.yul\":156:157   */\n      dup1\n        /* \"#utility.yul\":149:161   */\n      revert\n        /* \"#utility.yul\":111:163   */\n    tag_23:\n      pop\n      pop\n        /* \"#utility.yul\":182:205   */\n      dup1\n      calldataload\n      swap3\n        /* \"#utility.yul\":252:254   */\n      0x20\n        /* \"#utility.yul\":237:255   */\n      swap1\n      swap2\n      add\n        /* \"#utility.yul\":224:256   */\n      calldataload\n      swap2\n      pop\n        /* \"#utility.yul\":14:262   */\n      jump\t// out\n        /* \"#utility.yul\":449:714   */\n    tag_15:\n        /* \"#utility.yul\":489:496   */\n      0x00\n        /* \"#utility.yul\":555:556   */\n      dup2\n        /* \"#utility.yul\":551:552   */\n      0x00\n        /* \"#utility.yul\":547:553   */\n      not\n        /* \"#utility.yul\":543:557   */\n      div\n        /* \"#utility.yul\":540:541   */\n      dup4\n        /* \"#utility.yul\":537:558   */\n      gt\n        /* \"#utility.yul\":532:533   */\n      dup3\n        /* \"#utility.yul\":525:534   */\n      iszero\n        /* \"#utility.yul\":518:535   */\n      iszero\n        /* \"#utility.yul\":514:559   */\n      and\n        /* \"#utility.yul\":511:679   */\n      iszero\n      tag_26\n      jumpi\n        /* \"#utility.yul\":601:611   */\n      0x4e487b71\n        /* \"#utility.yul\":596:599   */\n      0xe0\n        /* \"#utility.yul\":592:612   */\n      shl\n        /* \"#utility.yul\":589:590   */\n      0x00\n        /* \"#utility.yul\":582:613   */\n      mstore\n        /* \"#utility.yul\":636:640   */\n      0x11\n        /* \"#utility.yul\":633:634   */\n      0x04\n        /* \"#utility.yul\":626:641   */\n      mstore\n        /* \"#utility.yul\":664:668   */\n      0x24\n        /* \"#utility.yul\":661:662   */\n      0x00\n        /* \"#utility.yul\":654:669   */\n      revert\n        /* \"#utility.yul\":511:679   */\n    tag_26:\n      pop\n        /* \"#utility.yul\":699:708   */\n      mul\n      swap1\n        /* \"#utility.yul\":449:714   */\n      jump\t// out\n        /* \"#utility.yul\":719:936   */\n    tag_17:\n        /* \"#utility.yul\":759:760   */\n      0x00\n        /* \"#utility.yul\":785:786   */\n      dup3\n        /* \"#utility.yul\":775:907   */\n      tag_28\n      jumpi\n        /* \"#utility.yul\":829:839   */\n      0x4e487b71\n        /* \"#utility.yul\":824:827   */\n      0xe0\n        /* \"#utility.yul\":820:840   */\n      shl\n        /* \"#utility.yul\":817:818   */\n      0x00\n        /* \"#utility.yul\":810:841   */\n      mstore\n        /* \"#utility.yul\":864:868   */\n      0x12\n        /* \"#utility.yul\":861:862   */\n      0x04\n        /* \"#utility.yul\":854:869   */\n      mstore\n        /* \"#utility.yul\":892:896   */\n      0x24\n        /* \"#utility.yul\":889:890   */\n      0x00\n        /* \"#utility.yul\":882:897   */\n      revert\n        /* \"#utility.yul\":775:907   */\n    tag_28:\n      pop\n        /* \"#utility.yul\":921:930   */\n      div\n      swap1\n        /* \"#utility.yul\":719:936   */\n      jump\t// out\n\n    auxdata: 0xa2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b50610184806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063042116f114610030575b600080fd5b61004361003e3660046100dd565b610055565b60405190815260200160405180910390f35b60006100618383610068565b9392505050565b60008061007583856100ff565b905082610082858361012c565b146100615760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840160405180910390fd5b600080604083850312156100f057600080fd5b50508035926020909101359150565b600081600019048311821515161561012757634e487b7160e01b600052601160045260246000fd5b500290565b60008261014957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 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 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42116F1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xDD JUMP JUMPDEST PUSH2 0x55 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x61 DUP4 DUP4 PUSH2 0x68 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x75 DUP4 DUP6 PUSH2 0xFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x82 DUP6 DUP4 PUSH2 0x12C JUMP JUMPDEST EQ PUSH2 0x61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x127 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x149 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DUP8 0xB3 SWAP1 0xE3 0x4A 0xFB PUSH15 0xEC16BC38BFA340E937C1852D58F556 0xB2 SWAP8 0x26 LOG2 0xB7 MSIZE ADDMOD 0xEF 0x25 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
							"sourceMap": "442:147:0:-:0;;;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {
								"@multiply_54": {
									"entryPoint": 104,
									"id": 54,
									"parameterSlots": 2,
									"returnSlots": 1
								},
								"@testMultiply_71": {
									"entryPoint": 85,
									"id": 71,
									"parameterSlots": 2,
									"returnSlots": 1
								},
								"abi_decode_tuple_t_uint256t_uint256": {
									"entryPoint": 221,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 2
								},
								"abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed": {
									"entryPoint": null,
									"id": null,
									"parameterSlots": 1,
									"returnSlots": 1
								},
								"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
									"entryPoint": null,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								},
								"checked_div_t_uint256": {
									"entryPoint": 300,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								},
								"checked_mul_t_uint256": {
									"entryPoint": 255,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								}
							},
							"generatedSources": [
								{
									"ast": {
										"nodeType": "YulBlock",
										"src": "0:1340:1",
										"statements": [
											{
												"nodeType": "YulBlock",
												"src": "6:3:1",
												"statements": []
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "101:161:1",
													"statements": [
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "147:16:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "156:1:1",
																					"type": "",
																					"value": "0"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "159:1:1",
																					"type": "",
																					"value": "0"
																				}
																			],
																			"functionName": {
																				"name": "revert",
																				"nodeType": "YulIdentifier",
																				"src": "149:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "149:12:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "149:12:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "dataEnd",
																				"nodeType": "YulIdentifier",
																				"src": "122:7:1"
																			},
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "131:9:1"
																			}
																		],
																		"functionName": {
																			"name": "sub",
																			"nodeType": "YulIdentifier",
																			"src": "118:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "118:23:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "143:2:1",
																		"type": "",
																		"value": "64"
																	}
																],
																"functionName": {
																	"name": "slt",
																	"nodeType": "YulIdentifier",
																	"src": "114:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "114:32:1"
															},
															"nodeType": "YulIf",
															"src": "111:52:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "172:33:1",
															"value": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "195:9:1"
																	}
																],
																"functionName": {
																	"name": "calldataload",
																	"nodeType": "YulIdentifier",
																	"src": "182:12:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "182:23:1"
															},
															"variableNames": [
																{
																	"name": "value0",
																	"nodeType": "YulIdentifier",
																	"src": "172:6:1"
																}
															]
														},
														{
															"nodeType": "YulAssignment",
															"src": "214:42:1",
															"value": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "241:9:1"
																			},
																			{
																				"kind": "number",
																				"nodeType": "YulLiteral",
																				"src": "252:2:1",
																				"type": "",
																				"value": "32"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "237:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "237:18:1"
																	}
																],
																"functionName": {
																	"name": "calldataload",
																	"nodeType": "YulIdentifier",
																	"src": "224:12:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "224:32:1"
															},
															"variableNames": [
																{
																	"name": "value1",
																	"nodeType": "YulIdentifier",
																	"src": "214:6:1"
																}
															]
														}
													]
												},
												"name": "abi_decode_tuple_t_uint256t_uint256",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "59:9:1",
														"type": ""
													},
													{
														"name": "dataEnd",
														"nodeType": "YulTypedName",
														"src": "70:7:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "82:6:1",
														"type": ""
													},
													{
														"name": "value1",
														"nodeType": "YulTypedName",
														"src": "90:6:1",
														"type": ""
													}
												],
												"src": "14:248:1"
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "368:76:1",
													"statements": [
														{
															"nodeType": "YulAssignment",
															"src": "378:26:1",
															"value": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "390:9:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "401:2:1",
																		"type": "",
																		"value": "32"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "386:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "386:18:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "378:4:1"
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "420:9:1"
																	},
																	{
																		"name": "value0",
																		"nodeType": "YulIdentifier",
																		"src": "431:6:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "413:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "413:25:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "413:25:1"
														}
													]
												},
												"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "337:9:1",
														"type": ""
													},
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "348:6:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "359:4:1",
														"type": ""
													}
												],
												"src": "267:177:1"
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "501:213:1",
													"statements": [
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "568:111:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "589:1:1",
																					"type": "",
																					"value": "0"
																				},
																				{
																					"arguments": [
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "596:3:1",
																							"type": "",
																							"value": "224"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "601:10:1",
																							"type": "",
																							"value": "0x4e487b71"
																						}
																					],
																					"functionName": {
																						"name": "shl",
																						"nodeType": "YulIdentifier",
																						"src": "592:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "592:20:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "582:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "582:31:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "582:31:1"
																	},
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "633:1:1",
																					"type": "",
																					"value": "4"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "636:4:1",
																					"type": "",
																					"value": "0x11"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "626:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "626:15:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "626:15:1"
																	},
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "661:1:1",
																					"type": "",
																					"value": "0"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "664:4:1",
																					"type": "",
																					"value": "0x24"
																				}
																			],
																			"functionName": {
																				"name": "revert",
																				"nodeType": "YulIdentifier",
																				"src": "654:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "654:15:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "654:15:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"arguments": [
																					{
																						"name": "x",
																						"nodeType": "YulIdentifier",
																						"src": "532:1:1"
																					}
																				],
																				"functionName": {
																					"name": "iszero",
																					"nodeType": "YulIdentifier",
																					"src": "525:6:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "525:9:1"
																			}
																		],
																		"functionName": {
																			"name": "iszero",
																			"nodeType": "YulIdentifier",
																			"src": "518:6:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "518:17:1"
																	},
																	{
																		"arguments": [
																			{
																				"name": "y",
																				"nodeType": "YulIdentifier",
																				"src": "540:1:1"
																			},
																			{
																				"arguments": [
																					{
																						"arguments": [
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "551:1:1",
																								"type": "",
																								"value": "0"
																							}
																						],
																						"functionName": {
																							"name": "not",
																							"nodeType": "YulIdentifier",
																							"src": "547:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "547:6:1"
																					},
																					{
																						"name": "x",
																						"nodeType": "YulIdentifier",
																						"src": "555:1:1"
																					}
																				],
																				"functionName": {
																					"name": "div",
																					"nodeType": "YulIdentifier",
																					"src": "543:3:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "543:14:1"
																			}
																		],
																		"functionName": {
																			"name": "gt",
																			"nodeType": "YulIdentifier",
																			"src": "537:2:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "537:21:1"
																	}
																],
																"functionName": {
																	"name": "and",
																	"nodeType": "YulIdentifier",
																	"src": "514:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "514:45:1"
															},
															"nodeType": "YulIf",
															"src": "511:168:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "688:20:1",
															"value": {
																"arguments": [
																	{
																		"name": "x",
																		"nodeType": "YulIdentifier",
																		"src": "703:1:1"
																	},
																	{
																		"name": "y",
																		"nodeType": "YulIdentifier",
																		"src": "706:1:1"
																	}
																],
																"functionName": {
																	"name": "mul",
																	"nodeType": "YulIdentifier",
																	"src": "699:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "699:9:1"
															},
															"variableNames": [
																{
																	"name": "product",
																	"nodeType": "YulIdentifier",
																	"src": "688:7:1"
																}
															]
														}
													]
												},
												"name": "checked_mul_t_uint256",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "x",
														"nodeType": "YulTypedName",
														"src": "480:1:1",
														"type": ""
													},
													{
														"name": "y",
														"nodeType": "YulTypedName",
														"src": "483:1:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "product",
														"nodeType": "YulTypedName",
														"src": "489:7:1",
														"type": ""
													}
												],
												"src": "449:265:1"
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "765:171:1",
													"statements": [
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "796:111:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "817:1:1",
																					"type": "",
																					"value": "0"
																				},
																				{
																					"arguments": [
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "824:3:1",
																							"type": "",
																							"value": "224"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "829:10:1",
																							"type": "",
																							"value": "0x4e487b71"
																						}
																					],
																					"functionName": {
																						"name": "shl",
																						"nodeType": "YulIdentifier",
																						"src": "820:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "820:20:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "810:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "810:31:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "810:31:1"
																	},
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "861:1:1",
																					"type": "",
																					"value": "4"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "864:4:1",
																					"type": "",
																					"value": "0x12"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "854:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "854:15:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "854:15:1"
																	},
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "889:1:1",
																					"type": "",
																					"value": "0"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "892:4:1",
																					"type": "",
																					"value": "0x24"
																				}
																			],
																			"functionName": {
																				"name": "revert",
																				"nodeType": "YulIdentifier",
																				"src": "882:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "882:15:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "882:15:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "y",
																		"nodeType": "YulIdentifier",
																		"src": "785:1:1"
																	}
																],
																"functionName": {
																	"name": "iszero",
																	"nodeType": "YulIdentifier",
																	"src": "778:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "778:9:1"
															},
															"nodeType": "YulIf",
															"src": "775:132:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "916:14:1",
															"value": {
																"arguments": [
																	{
																		"name": "x",
																		"nodeType": "YulIdentifier",
																		"src": "925:1:1"
																	},
																	{
																		"name": "y",
																		"nodeType": "YulIdentifier",
																		"src": "928:1:1"
																	}
																],
																"functionName": {
																	"name": "div",
																	"nodeType": "YulIdentifier",
																	"src": "921:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "921:9:1"
															},
															"variableNames": [
																{
																	"name": "r",
																	"nodeType": "YulIdentifier",
																	"src": "916:1:1"
																}
															]
														}
													]
												},
												"name": "checked_div_t_uint256",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "x",
														"nodeType": "YulTypedName",
														"src": "750:1:1",
														"type": ""
													},
													{
														"name": "y",
														"nodeType": "YulTypedName",
														"src": "753:1:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "r",
														"nodeType": "YulTypedName",
														"src": "759:1:1",
														"type": ""
													}
												],
												"src": "719:217:1"
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "1115:223:1",
													"statements": [
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "1132:9:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "1143:2:1",
																		"type": "",
																		"value": "32"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "1125:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1125:21:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "1125:21:1"
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "1166:9:1"
																			},
																			{
																				"kind": "number",
																				"nodeType": "YulLiteral",
																				"src": "1177:2:1",
																				"type": "",
																				"value": "32"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "1162:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "1162:18:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "1182:2:1",
																		"type": "",
																		"value": "33"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "1155:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1155:30:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "1155:30:1"
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "1205:9:1"
																			},
																			{
																				"kind": "number",
																				"nodeType": "YulLiteral",
																				"src": "1216:2:1",
																				"type": "",
																				"value": "64"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "1201:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "1201:18:1"
																	},
																	{
																		"hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f",
																		"kind": "string",
																		"nodeType": "YulLiteral",
																		"src": "1221:34:1",
																		"type": "",
																		"value": "SafeMath: multiplication overflo"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "1194:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1194:62:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "1194:62:1"
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "1276:9:1"
																			},
																			{
																				"kind": "number",
																				"nodeType": "YulLiteral",
																				"src": "1287:2:1",
																				"type": "",
																				"value": "96"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "1272:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "1272:18:1"
																	},
																	{
																		"hexValue": "77",
																		"kind": "string",
																		"nodeType": "YulLiteral",
																		"src": "1292:3:1",
																		"type": "",
																		"value": "w"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "1265:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1265:31:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "1265:31:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "1305:27:1",
															"value": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "1317:9:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "1328:3:1",
																		"type": "",
																		"value": "128"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "1313:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1313:19:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "1305:4:1"
																}
															]
														}
													]
												},
												"name": "abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "1092:9:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "1106:4:1",
														"type": ""
													}
												],
												"src": "941:397:1"
											}
										]
									},
									"contents": "{\n    { }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x)))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        product := mul(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"SafeMath: multiplication overflo\")\n        mstore(add(headStart, 96), \"w\")\n        tail := add(headStart, 128)\n    }\n}",
									"id": 1,
									"language": "Yul",
									"name": "#utility.yul"
								}
							],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063042116f114610030575b600080fd5b61004361003e3660046100dd565b610055565b60405190815260200160405180910390f35b60006100618383610068565b9392505050565b60008061007583856100ff565b905082610082858361012c565b146100615760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840160405180910390fd5b600080604083850312156100f057600080fd5b50508035926020909101359150565b600081600019048311821515161561012757634e487b7160e01b600052601160045260246000fd5b500290565b60008261014957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42116F1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xDD JUMP JUMPDEST PUSH2 0x55 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x61 DUP4 DUP4 PUSH2 0x68 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x75 DUP4 DUP6 PUSH2 0xFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x82 DUP6 DUP4 PUSH2 0x12C JUMP JUMPDEST EQ PUSH2 0x61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x127 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x149 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DUP8 0xB3 SWAP1 0xE3 0x4A 0xFB PUSH15 0xEC16BC38BFA340E937C1852D58F556 0xB2 SWAP8 0x26 LOG2 0xB7 MSIZE ADDMOD 0xEF 0x25 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
							"sourceMap": "442:147:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;479:108;;;;;;:::i;:::-;;:::i;:::-;;;413:25:1;;;401:2;386:18;479:108:0;;;;;;;;538:4;561:19;575:1;578;561:13;:19::i;:::-;554:26;479:108;-1:-1:-1;;;479:108:0:o;255:183::-;312:4;;340:5;344:1;340;:5;:::i;:::-;328:17;-1:-1:-1;372:1:0;363:5;367:1;328:17;363:5;:::i;:::-;:10;355:56;;;;-1:-1:-1;;;355:56:0;;1143:2:1;355:56:0;;;1125:21:1;1182:2;1162:18;;;1155:30;1221:34;1201:18;;;1194:62;-1:-1:-1;;;1272:18:1;;;1265:31;1313:19;;355:56:0;;;;;;;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:265::-;489:7;555:1;551;547:6;543:14;540:1;537:21;532:1;525:9;518:17;514:45;511:168;;;601:10;596:3;592:20;589:1;582:31;636:4;633:1;626:15;664:4;661:1;654:15;511:168;-1:-1:-1;699:9:1;;449:265::o;719:217::-;759:1;785;775:132;;829:10;824:3;820:20;817:1;810:31;864:4;861:1;854:15;892:4;889:1;882:15;775:132;-1:-1:-1;921:9:1;;719:217::o"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "77600",
								"executionCost": "129",
								"totalCost": "77729"
							},
							"external": {
								"testMultiply(uint256,uint256)": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 442,
									"end": 589,
									"name": "PUSH",
									"source": 0,
									"value": "80"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "PUSH",
									"source": 0,
									"value": "40"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "CALLVALUE",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "ISZERO",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "POP",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 442,
									"end": 589,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 442,
									"end": 589,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033",
									".code": [
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "CALLVALUE",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "tag",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "CALLDATALOAD",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH",
											"source": 0,
											"value": "E0"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "SHR",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH",
											"source": 0,
											"value": "42116F1"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "tag",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 442,
											"end": 589,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 442,
											"end": 589,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "tag",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "tag",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "tag",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 413,
											"end": 438,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 413,
											"end": 438,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 413,
											"end": 438,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 401,
											"end": 403,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 386,
											"end": 404,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 479,
											"end": 587,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "RETURN",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "tag",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 479,
											"end": 587,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 538,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 561,
											"end": 580,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "11"
										},
										{
											"begin": 575,
											"end": 576,
											"name": "DUP4",
											"source": 0
										},
										{
											"begin": 578,
											"end": 579,
											"name": "DUP4",
											"source": 0
										},
										{
											"begin": 561,
											"end": 574,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "12"
										},
										{
											"begin": 561,
											"end": 580,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 561,
											"end": 580,
											"name": "tag",
											"source": 0,
											"value": "11"
										},
										{
											"begin": 561,
											"end": 580,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 554,
											"end": 580,
											"name": "SWAP4",
											"source": 0
										},
										{
											"begin": 479,
											"end": 587,
											"name": "SWAP3",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 479,
											"end": 587,
											"name": "JUMP",
											"source": 0,
											"value": "[out]"
										},
										{
											"begin": 255,
											"end": 438,
											"name": "tag",
											"source": 0,
											"value": "12"
										},
										{
											"begin": 255,
											"end": 438,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 312,
											"end": 316,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 312,
											"end": 316,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 340,
											"end": 345,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "14"
										},
										{
											"begin": 344,
											"end": 345,
											"name": "DUP4",
											"source": 0
										},
										{
											"begin": 340,
											"end": 341,
											"name": "DUP6",
											"source": 0
										},
										{
											"begin": 340,
											"end": 345,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "15"
										},
										{
											"begin": 340,
											"end": 345,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 340,
											"end": 345,
											"name": "tag",
											"source": 0,
											"value": "14"
										},
										{
											"begin": 340,
											"end": 345,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 328,
											"end": 345,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 372,
											"end": 373,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 363,
											"end": 368,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "16"
										},
										{
											"begin": 367,
											"end": 368,
											"name": "DUP6",
											"source": 0
										},
										{
											"begin": 328,
											"end": 345,
											"name": "DUP4",
											"source": 0
										},
										{
											"begin": 363,
											"end": 368,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "17"
										},
										{
											"begin": 363,
											"end": 368,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 363,
											"end": 368,
											"name": "tag",
											"source": 0,
											"value": "16"
										},
										{
											"begin": 363,
											"end": 368,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 363,
											"end": 373,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "11"
										},
										{
											"begin": 355,
											"end": 411,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 355,
											"end": 411,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "461BCD"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "E5"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 355,
											"end": 411,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 1143,
											"end": 1145,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 355,
											"end": 411,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 355,
											"end": 411,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 1125,
											"end": 1146,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 1182,
											"end": 1184,
											"name": "PUSH",
											"source": 1,
											"value": "21"
										},
										{
											"begin": 1162,
											"end": 1180,
											"name": "PUSH",
											"source": 1,
											"value": "24"
										},
										{
											"begin": 1162,
											"end": 1180,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 1162,
											"end": 1180,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 1155,
											"end": 1185,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 1221,
											"end": 1255,
											"name": "PUSH",
											"source": 1,
											"value": "536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F"
										},
										{
											"begin": 1201,
											"end": 1219,
											"name": "PUSH",
											"source": 1,
											"value": "44"
										},
										{
											"begin": 1201,
											"end": 1219,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 1201,
											"end": 1219,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 1194,
											"end": 1256,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "77"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "F8"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 1272,
											"end": 1290,
											"name": "PUSH",
											"source": 1,
											"value": "64"
										},
										{
											"begin": 1272,
											"end": 1290,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 1272,
											"end": 1290,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 1265,
											"end": 1296,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 1313,
											"end": 1332,
											"name": "PUSH",
											"source": 1,
											"value": "84"
										},
										{
											"begin": 1313,
											"end": 1332,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 355,
											"end": 411,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 355,
											"end": 411,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 355,
											"end": 411,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 14,
											"end": 262,
											"name": "tag",
											"source": 1,
											"value": "6"
										},
										{
											"begin": 14,
											"end": 262,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 82,
											"end": 88,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 90,
											"end": 96,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 143,
											"end": 145,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 131,
											"end": 140,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 122,
											"end": 129,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 118,
											"end": 141,
											"name": "SUB",
											"source": 1
										},
										{
											"begin": 114,
											"end": 146,
											"name": "SLT",
											"source": 1
										},
										{
											"begin": 111,
											"end": 163,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 111,
											"end": 163,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "23"
										},
										{
											"begin": 111,
											"end": 163,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 159,
											"end": 160,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 156,
											"end": 157,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 149,
											"end": 161,
											"name": "REVERT",
											"source": 1
										},
										{
											"begin": 111,
											"end": 163,
											"name": "tag",
											"source": 1,
											"value": "23"
										},
										{
											"begin": 111,
											"end": 163,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 182,
											"end": 205,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 182,
											"end": 205,
											"name": "CALLDATALOAD",
											"source": 1
										},
										{
											"begin": 182,
											"end": 205,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 252,
											"end": 254,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 237,
											"end": 255,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 237,
											"end": 255,
											"name": "SWAP2",
											"source": 1
										},
										{
											"begin": 237,
											"end": 255,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 224,
											"end": 256,
											"name": "CALLDATALOAD",
											"source": 1
										},
										{
											"begin": 224,
											"end": 256,
											"name": "SWAP2",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 14,
											"end": 262,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										},
										{
											"begin": 449,
											"end": 714,
											"name": "tag",
											"source": 1,
											"value": "15"
										},
										{
											"begin": 449,
											"end": 714,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 489,
											"end": 496,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 555,
											"end": 556,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 551,
											"end": 552,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 547,
											"end": 553,
											"name": "NOT",
											"source": 1
										},
										{
											"begin": 543,
											"end": 557,
											"name": "DIV",
											"source": 1
										},
										{
											"begin": 540,
											"end": 541,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 537,
											"end": 558,
											"name": "GT",
											"source": 1
										},
										{
											"begin": 532,
											"end": 533,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 525,
											"end": 534,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 518,
											"end": 535,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 514,
											"end": 559,
											"name": "AND",
											"source": 1
										},
										{
											"begin": 511,
											"end": 679,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 511,
											"end": 679,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "26"
										},
										{
											"begin": 511,
											"end": 679,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 601,
											"end": 611,
											"name": "PUSH",
											"source": 1,
											"value": "4E487B71"
										},
										{
											"begin": 596,
											"end": 599,
											"name": "PUSH",
											"source": 1,
											"value": "E0"
										},
										{
											"begin": 592,
											"end": 612,
											"name": "SHL",
											"source": 1
										},
										{
											"begin": 589,
											"end": 590,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 582,
											"end": 613,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 636,
											"end": 640,
											"name": "PUSH",
											"source": 1,
											"value": "11"
										},
										{
											"begin": 633,
											"end": 634,
											"name": "PUSH",
											"source": 1,
											"value": "4"
										},
										{
											"begin": 626,
											"end": 641,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 664,
											"end": 668,
											"name": "PUSH",
											"source": 1,
											"value": "24"
										},
										{
											"begin": 661,
											"end": 662,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 654,
											"end": 669,
											"name": "REVERT",
											"source": 1
										},
										{
											"begin": 511,
											"end": 679,
											"name": "tag",
											"source": 1,
											"value": "26"
										},
										{
											"begin": 511,
											"end": 679,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 699,
											"end": 708,
											"name": "MUL",
											"source": 1
										},
										{
											"begin": 699,
											"end": 708,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 449,
											"end": 714,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										},
										{
											"begin": 719,
											"end": 936,
											"name": "tag",
											"source": 1,
											"value": "17"
										},
										{
											"begin": 719,
											"end": 936,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 759,
											"end": 760,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 785,
											"end": 786,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 775,
											"end": 907,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "28"
										},
										{
											"begin": 775,
											"end": 907,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 829,
											"end": 839,
											"name": "PUSH",
											"source": 1,
											"value": "4E487B71"
										},
										{
											"begin": 824,
											"end": 827,
											"name": "PUSH",
											"source": 1,
											"value": "E0"
										},
										{
											"begin": 820,
											"end": 840,
											"name": "SHL",
											"source": 1
										},
										{
											"begin": 817,
											"end": 818,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 810,
											"end": 841,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 864,
											"end": 868,
											"name": "PUSH",
											"source": 1,
											"value": "12"
										},
										{
											"begin": 861,
											"end": 862,
											"name": "PUSH",
											"source": 1,
											"value": "4"
										},
										{
											"begin": 854,
											"end": 869,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 892,
											"end": 896,
											"name": "PUSH",
											"source": 1,
											"value": "24"
										},
										{
											"begin": 889,
											"end": 890,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 882,
											"end": 897,
											"name": "REVERT",
											"source": 1
										},
										{
											"begin": 775,
											"end": 907,
											"name": "tag",
											"source": 1,
											"value": "28"
										},
										{
											"begin": 775,
											"end": 907,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 921,
											"end": 930,
											"name": "DIV",
											"source": 1
										},
										{
											"begin": 921,
											"end": 930,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 719,
											"end": 936,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										}
									]
								}
							}
						},
						"methodIdentifiers": {
							"testMultiply(uint256,uint256)": "042116f1"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"testMultiply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"TestSafeMathAsLibrary\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27\",\"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				},
				"TestSafeMathMonkeyPatch": {
					"abi": [
						{
							"inputs": [
								{
									"internalType": "uint256",
									"name": "x",
									"type": "uint256"
								},
								{
									"internalType": "uint256",
									"name": "y",
									"type": "uint256"
								}
							],
							"name": "testAdd",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"stateMutability": "pure",
							"type": "function"
						}
					],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Libraries.sol\":591:754  contract TestSafeMathMonkeyPatch {... */\n  mstore(0x40, 0x80)\n  callvalue\n  dup1\n  iszero\n  tag_1\n  jumpi\n  0x00\n  dup1\n  revert\ntag_1:\n  pop\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Libraries.sol\":591:754  contract TestSafeMathMonkeyPatch {... */\n      mstore(0x40, 0x80)\n      callvalue\n      dup1\n      iszero\n      tag_1\n      jumpi\n      0x00\n      dup1\n      revert\n    tag_1:\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0x7c3ffef2\n      eq\n      tag_3\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/Libraries.sol\":660:752  function testAdd(uint x, uint y) public pure returns (uint) {... */\n    tag_3:\n      tag_4\n      tag_5\n      calldatasize\n      0x04\n      tag_6\n      jump\t// in\n    tag_5:\n      tag_7\n      jump\t// in\n    tag_4:\n      mload(0x40)\n        /* \"#utility.yul\":413:438   */\n      swap1\n      dup2\n      mstore\n        /* \"#utility.yul\":401:403   */\n      0x20\n        /* \"#utility.yul\":386:404   */\n      add\n        /* \"contracts/Libraries.sol\":660:752  function testAdd(uint x, uint y) public pure returns (uint) {... */\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n    tag_7:\n        /* \"contracts/Libraries.sol\":714:718  uint */\n      0x00\n        /* \"contracts/Libraries.sol\":737:745  x.add(y) */\n      tag_11\n        /* \"contracts/Libraries.sol\":737:738  x */\n      dup4\n        /* \"contracts/Libraries.sol\":743:744  y */\n      dup4\n        /* \"contracts/Libraries.sol\":737:742  x.add */\n      tag_12\n        /* \"contracts/Libraries.sol\":737:745  x.add(y) */\n      jump\t// in\n    tag_11:\n        /* \"contracts/Libraries.sol\":730:745  return x.add(y) */\n      swap4\n        /* \"contracts/Libraries.sol\":660:752  function testAdd(uint x, uint y) public pure returns (uint) {... */\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n        /* \"contracts/Libraries.sol\":82:232  function add(uint x, uint y) internal pure returns (uint) {... */\n    tag_12:\n        /* \"contracts/Libraries.sol\":134:138  uint */\n      0x00\n      dup1\n        /* \"contracts/Libraries.sol\":159:164  x + y */\n      tag_14\n        /* \"contracts/Libraries.sol\":163:164  y */\n      dup4\n        /* \"contracts/Libraries.sol\":159:160  x */\n      dup6\n        /* \"contracts/Libraries.sol\":159:164  x + y */\n      tag_15\n      jump\t// in\n    tag_14:\n        /* \"contracts/Libraries.sol\":150:164  uint z = x + y */\n      swap1\n      pop\n        /* \"contracts/Libraries.sol\":187:188  x */\n      dup4\n        /* \"contracts/Libraries.sol\":182:183  z */\n      dup2\n        /* \"contracts/Libraries.sol\":182:188  z >= x */\n      lt\n      iszero\n        /* \"contracts/Libraries.sol\":174:206  require(z >= x, \"uint overflow\") */\n      tag_11\n      jumpi\n      mload(0x40)\n      shl(0xe5, 0x461bcd)\n      dup2\n      mstore\n        /* \"#utility.yul\":881:883   */\n      0x20\n        /* \"contracts/Libraries.sol\":174:206  require(z >= x, \"uint overflow\") */\n      0x04\n      dup3\n      add\n        /* \"#utility.yul\":863:884   */\n      mstore\n        /* \"#utility.yul\":920:922   */\n      0x0d\n        /* \"#utility.yul\":900:918   */\n      0x24\n      dup3\n      add\n        /* \"#utility.yul\":893:923   */\n      mstore\n      shl(0x98, 0x75696e74206f766572666c6f77)\n        /* \"#utility.yul\":939:957   */\n      0x44\n      dup3\n      add\n        /* \"#utility.yul\":932:975   */\n      mstore\n        /* \"#utility.yul\":992:1010   */\n      0x64\n      add\n        /* \"contracts/Libraries.sol\":174:206  require(z >= x, \"uint overflow\") */\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      revert\n        /* \"#utility.yul\":14:262   */\n    tag_6:\n        /* \"#utility.yul\":82:88   */\n      0x00\n        /* \"#utility.yul\":90:96   */\n      dup1\n        /* \"#utility.yul\":143:145   */\n      0x40\n        /* \"#utility.yul\":131:140   */\n      dup4\n        /* \"#utility.yul\":122:129   */\n      dup6\n        /* \"#utility.yul\":118:141   */\n      sub\n        /* \"#utility.yul\":114:146   */\n      slt\n        /* \"#utility.yul\":111:163   */\n      iszero\n      tag_21\n      jumpi\n        /* \"#utility.yul\":159:160   */\n      0x00\n        /* \"#utility.yul\":156:157   */\n      dup1\n        /* \"#utility.yul\":149:161   */\n      revert\n        /* \"#utility.yul\":111:163   */\n    tag_21:\n      pop\n      pop\n        /* \"#utility.yul\":182:205   */\n      dup1\n      calldataload\n      swap3\n        /* \"#utility.yul\":252:254   */\n      0x20\n        /* \"#utility.yul\":237:255   */\n      swap1\n      swap2\n      add\n        /* \"#utility.yul\":224:256   */\n      calldataload\n      swap2\n      pop\n        /* \"#utility.yul\":14:262   */\n      jump\t// out\n        /* \"#utility.yul\":449:674   */\n    tag_15:\n        /* \"#utility.yul\":489:492   */\n      0x00\n        /* \"#utility.yul\":520:521   */\n      dup3\n        /* \"#utility.yul\":516:522   */\n      not\n        /* \"#utility.yul\":513:514   */\n      dup3\n        /* \"#utility.yul\":510:523   */\n      gt\n        /* \"#utility.yul\":507:643   */\n      iszero\n      tag_24\n      jumpi\n        /* \"#utility.yul\":565:575   */\n      0x4e487b71\n        /* \"#utility.yul\":560:563   */\n      0xe0\n        /* \"#utility.yul\":556:576   */\n      shl\n        /* \"#utility.yul\":553:554   */\n      0x00\n        /* \"#utility.yul\":546:577   */\n      mstore\n        /* \"#utility.yul\":600:604   */\n      0x11\n        /* \"#utility.yul\":597:598   */\n      0x04\n        /* \"#utility.yul\":590:605   */\n      mstore\n        /* \"#utility.yul\":628:632   */\n      0x24\n        /* \"#utility.yul\":625:626   */\n      0x00\n        /* \"#utility.yul\":618:633   */\n      revert\n        /* \"#utility.yul\":507:643   */\n    tag_24:\n      pop\n        /* \"#utility.yul\":659:668   */\n      add\n      swap1\n        /* \"#utility.yul\":449:674   */\n      jump\t// out\n\n    auxdata: 0xa264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b5061012b806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80637c3ffef214602d575b600080fd5b603c603836600460af565b604e565b60405190815260200160405180910390f35b600060588383605f565b9392505050565b600080606a838560d0565b90508381101560585760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b604482015260640160405180910390fd5b6000806040838503121560c157600080fd5b50508035926020909101359150565b6000821982111560f057634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12B DUP1 PUSH2 0x20 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C3FFEF2 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3C PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x4E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x58 DUP4 DUP4 PUSH1 0x5F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6A DUP4 DUP6 PUSH1 0xD0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH1 0x58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH1 0xF0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 0xA7 BLOCKHASH 0x4C PUSH7 0x46BD9AC8897F28 0xAE SWAP3 0x21 PUSH13 0x3F0C9915EC50FE048A2CFBE40F SWAP9 0xFC DUP12 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
							"sourceMap": "591:163:0:-:0;;;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {
								"@add_26": {
									"entryPoint": 95,
									"id": 26,
									"parameterSlots": 2,
									"returnSlots": 1
								},
								"@testAdd_90": {
									"entryPoint": 78,
									"id": 90,
									"parameterSlots": 2,
									"returnSlots": 1
								},
								"abi_decode_tuple_t_uint256t_uint256": {
									"entryPoint": 175,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 2
								},
								"abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed": {
									"entryPoint": null,
									"id": null,
									"parameterSlots": 1,
									"returnSlots": 1
								},
								"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
									"entryPoint": null,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								},
								"checked_add_t_uint256": {
									"entryPoint": 208,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								}
							},
							"generatedSources": [
								{
									"ast": {
										"nodeType": "YulBlock",
										"src": "0:1018:1",
										"statements": [
											{
												"nodeType": "YulBlock",
												"src": "6:3:1",
												"statements": []
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "101:161:1",
													"statements": [
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "147:16:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "156:1:1",
																					"type": "",
																					"value": "0"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "159:1:1",
																					"type": "",
																					"value": "0"
																				}
																			],
																			"functionName": {
																				"name": "revert",
																				"nodeType": "YulIdentifier",
																				"src": "149:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "149:12:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "149:12:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "dataEnd",
																				"nodeType": "YulIdentifier",
																				"src": "122:7:1"
																			},
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "131:9:1"
																			}
																		],
																		"functionName": {
																			"name": "sub",
																			"nodeType": "YulIdentifier",
																			"src": "118:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "118:23:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "143:2:1",
																		"type": "",
																		"value": "64"
																	}
																],
																"functionName": {
																	"name": "slt",
																	"nodeType": "YulIdentifier",
																	"src": "114:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "114:32:1"
															},
															"nodeType": "YulIf",
															"src": "111:52:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "172:33:1",
															"value": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "195:9:1"
																	}
																],
																"functionName": {
																	"name": "calldataload",
																	"nodeType": "YulIdentifier",
																	"src": "182:12:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "182:23:1"
															},
															"variableNames": [
																{
																	"name": "value0",
																	"nodeType": "YulIdentifier",
																	"src": "172:6:1"
																}
															]
														},
														{
															"nodeType": "YulAssignment",
															"src": "214:42:1",
															"value": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "241:9:1"
																			},
																			{
																				"kind": "number",
																				"nodeType": "YulLiteral",
																				"src": "252:2:1",
																				"type": "",
																				"value": "32"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "237:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "237:18:1"
																	}
																],
																"functionName": {
																	"name": "calldataload",
																	"nodeType": "YulIdentifier",
																	"src": "224:12:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "224:32:1"
															},
															"variableNames": [
																{
																	"name": "value1",
																	"nodeType": "YulIdentifier",
																	"src": "214:6:1"
																}
															]
														}
													]
												},
												"name": "abi_decode_tuple_t_uint256t_uint256",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "59:9:1",
														"type": ""
													},
													{
														"name": "dataEnd",
														"nodeType": "YulTypedName",
														"src": "70:7:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "82:6:1",
														"type": ""
													},
													{
														"name": "value1",
														"nodeType": "YulTypedName",
														"src": "90:6:1",
														"type": ""
													}
												],
												"src": "14:248:1"
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "368:76:1",
													"statements": [
														{
															"nodeType": "YulAssignment",
															"src": "378:26:1",
															"value": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "390:9:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "401:2:1",
																		"type": "",
																		"value": "32"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "386:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "386:18:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "378:4:1"
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "420:9:1"
																	},
																	{
																		"name": "value0",
																		"nodeType": "YulIdentifier",
																		"src": "431:6:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "413:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "413:25:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "413:25:1"
														}
													]
												},
												"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "337:9:1",
														"type": ""
													},
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "348:6:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "359:4:1",
														"type": ""
													}
												],
												"src": "267:177:1"
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "497:177:1",
													"statements": [
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "532:111:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "553:1:1",
																					"type": "",
																					"value": "0"
																				},
																				{
																					"arguments": [
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "560:3:1",
																							"type": "",
																							"value": "224"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "565:10:1",
																							"type": "",
																							"value": "0x4e487b71"
																						}
																					],
																					"functionName": {
																						"name": "shl",
																						"nodeType": "YulIdentifier",
																						"src": "556:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "556:20:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "546:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "546:31:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "546:31:1"
																	},
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "597:1:1",
																					"type": "",
																					"value": "4"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "600:4:1",
																					"type": "",
																					"value": "0x11"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "590:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "590:15:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "590:15:1"
																	},
																	{
																		"expression": {
																			"arguments": [
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "625:1:1",
																					"type": "",
																					"value": "0"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "628:4:1",
																					"type": "",
																					"value": "0x24"
																				}
																			],
																			"functionName": {
																				"name": "revert",
																				"nodeType": "YulIdentifier",
																				"src": "618:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "618:15:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "618:15:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "x",
																		"nodeType": "YulIdentifier",
																		"src": "513:1:1"
																	},
																	{
																		"arguments": [
																			{
																				"name": "y",
																				"nodeType": "YulIdentifier",
																				"src": "520:1:1"
																			}
																		],
																		"functionName": {
																			"name": "not",
																			"nodeType": "YulIdentifier",
																			"src": "516:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "516:6:1"
																	}
																],
																"functionName": {
																	"name": "gt",
																	"nodeType": "YulIdentifier",
																	"src": "510:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "510:13:1"
															},
															"nodeType": "YulIf",
															"src": "507:136:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "652:16:1",
															"value": {
																"arguments": [
																	{
																		"name": "x",
																		"nodeType": "YulIdentifier",
																		"src": "663:1:1"
																	},
																	{
																		"name": "y",
																		"nodeType": "YulIdentifier",
																		"src": "666:1:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "659:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "659:9:1"
															},
															"variableNames": [
																{
																	"name": "sum",
																	"nodeType": "YulIdentifier",
																	"src": "652:3:1"
																}
															]
														}
													]
												},
												"name": "checked_add_t_uint256",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "x",
														"nodeType": "YulTypedName",
														"src": "480:1:1",
														"type": ""
													},
													{
														"name": "y",
														"nodeType": "YulTypedName",
														"src": "483:1:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "sum",
														"nodeType": "YulTypedName",
														"src": "489:3:1",
														"type": ""
													}
												],
												"src": "449:225:1"
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "853:163:1",
													"statements": [
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "870:9:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "881:2:1",
																		"type": "",
																		"value": "32"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "863:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "863:21:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "863:21:1"
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "904:9:1"
																			},
																			{
																				"kind": "number",
																				"nodeType": "YulLiteral",
																				"src": "915:2:1",
																				"type": "",
																				"value": "32"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "900:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "900:18:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "920:2:1",
																		"type": "",
																		"value": "13"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "893:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "893:30:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "893:30:1"
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "943:9:1"
																			},
																			{
																				"kind": "number",
																				"nodeType": "YulLiteral",
																				"src": "954:2:1",
																				"type": "",
																				"value": "64"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "939:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "939:18:1"
																	},
																	{
																		"hexValue": "75696e74206f766572666c6f77",
																		"kind": "string",
																		"nodeType": "YulLiteral",
																		"src": "959:15:1",
																		"type": "",
																		"value": "uint overflow"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "932:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "932:43:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "932:43:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "984:26:1",
															"value": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "996:9:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "1007:2:1",
																		"type": "",
																		"value": "96"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "992:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "992:18:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "984:4:1"
																}
															]
														}
													]
												},
												"name": "abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "830:9:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "844:4:1",
														"type": ""
													}
												],
												"src": "679:337:1"
											}
										]
									},
									"contents": "{\n    { }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"uint overflow\")\n        tail := add(headStart, 96)\n    }\n}",
									"id": 1,
									"language": "Yul",
									"name": "#utility.yul"
								}
							],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80637c3ffef214602d575b600080fd5b603c603836600460af565b604e565b60405190815260200160405180910390f35b600060588383605f565b9392505050565b600080606a838560d0565b90508381101560585760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b604482015260640160405180910390fd5b6000806040838503121560c157600080fd5b50508035926020909101359150565b6000821982111560f057634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C3FFEF2 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3C PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x4E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x58 DUP4 DUP4 PUSH1 0x5F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6A DUP4 DUP6 PUSH1 0xD0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH1 0x58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH1 0xF0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 0xA7 BLOCKHASH 0x4C PUSH7 0x46BD9AC8897F28 0xAE SWAP3 0x21 PUSH13 0x3F0C9915EC50FE048A2CFBE40F SWAP9 0xFC DUP12 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
							"sourceMap": "591:163:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;660:92;;;;;;:::i;:::-;;:::i;:::-;;;413:25:1;;;401:2;386:18;660:92:0;;;;;;;;714:4;737:8;:1;743;737:5;:8::i;:::-;730:15;660:92;-1:-1:-1;;;660:92:0:o;82:150::-;134:4;;159:5;163:1;159;:5;:::i;:::-;150:14;;187:1;182;:6;;174:32;;;;-1:-1:-1;;;174:32:0;;881:2:1;174:32:0;;;863:21:1;920:2;900:18;;;893:30;-1:-1:-1;;;939:18:1;;;932:43;992:18;;174:32:0;;;;;;;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:225::-;489:3;520:1;516:6;513:1;510:13;507:136;;;565:10;560:3;556:20;553:1;546:31;600:4;597:1;590:15;628:4;625:1;618:15;507:136;-1:-1:-1;659:9:1;;449:225::o"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "59800",
								"executionCost": "111",
								"totalCost": "59911"
							},
							"external": {
								"testAdd(uint256,uint256)": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 591,
									"end": 754,
									"name": "PUSH",
									"source": 0,
									"value": "80"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "PUSH",
									"source": 0,
									"value": "40"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "CALLVALUE",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "ISZERO",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "POP",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 591,
									"end": 754,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 591,
									"end": 754,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033",
									".code": [
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "CALLVALUE",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "tag",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "CALLDATALOAD",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH",
											"source": 0,
											"value": "E0"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "SHR",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH",
											"source": 0,
											"value": "7C3FFEF2"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "tag",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 591,
											"end": 754,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 591,
											"end": 754,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "tag",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "tag",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "tag",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 413,
											"end": 438,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 413,
											"end": 438,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 413,
											"end": 438,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 401,
											"end": 403,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 386,
											"end": 404,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 660,
											"end": 752,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "RETURN",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "tag",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 660,
											"end": 752,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 714,
											"end": 718,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 737,
											"end": 745,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "11"
										},
										{
											"begin": 737,
											"end": 738,
											"name": "DUP4",
											"source": 0
										},
										{
											"begin": 743,
											"end": 744,
											"name": "DUP4",
											"source": 0
										},
										{
											"begin": 737,
											"end": 742,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "12"
										},
										{
											"begin": 737,
											"end": 745,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 737,
											"end": 745,
											"name": "tag",
											"source": 0,
											"value": "11"
										},
										{
											"begin": 737,
											"end": 745,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 730,
											"end": 745,
											"name": "SWAP4",
											"source": 0
										},
										{
											"begin": 660,
											"end": 752,
											"name": "SWAP3",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 660,
											"end": 752,
											"name": "JUMP",
											"source": 0,
											"value": "[out]"
										},
										{
											"begin": 82,
											"end": 232,
											"name": "tag",
											"source": 0,
											"value": "12"
										},
										{
											"begin": 82,
											"end": 232,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 134,
											"end": 138,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 134,
											"end": 138,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 159,
											"end": 164,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "14"
										},
										{
											"begin": 163,
											"end": 164,
											"name": "DUP4",
											"source": 0
										},
										{
											"begin": 159,
											"end": 160,
											"name": "DUP6",
											"source": 0
										},
										{
											"begin": 159,
											"end": 164,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "15"
										},
										{
											"begin": 159,
											"end": 164,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 159,
											"end": 164,
											"name": "tag",
											"source": 0,
											"value": "14"
										},
										{
											"begin": 159,
											"end": 164,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 150,
											"end": 164,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 150,
											"end": 164,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 187,
											"end": 188,
											"name": "DUP4",
											"source": 0
										},
										{
											"begin": 182,
											"end": 183,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 182,
											"end": 188,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 182,
											"end": 188,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "11"
										},
										{
											"begin": 174,
											"end": 206,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 174,
											"end": 206,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "461BCD"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "E5"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 174,
											"end": 206,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 881,
											"end": 883,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 174,
											"end": 206,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 174,
											"end": 206,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 863,
											"end": 884,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 920,
											"end": 922,
											"name": "PUSH",
											"source": 1,
											"value": "D"
										},
										{
											"begin": 900,
											"end": 918,
											"name": "PUSH",
											"source": 1,
											"value": "24"
										},
										{
											"begin": 900,
											"end": 918,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 900,
											"end": 918,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 893,
											"end": 923,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "75696E74206F766572666C6F77"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "98"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 939,
											"end": 957,
											"name": "PUSH",
											"source": 1,
											"value": "44"
										},
										{
											"begin": 939,
											"end": 957,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 939,
											"end": 957,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 932,
											"end": 975,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 992,
											"end": 1010,
											"name": "PUSH",
											"source": 1,
											"value": "64"
										},
										{
											"begin": 992,
											"end": 1010,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 174,
											"end": 206,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 174,
											"end": 206,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 174,
											"end": 206,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 14,
											"end": 262,
											"name": "tag",
											"source": 1,
											"value": "6"
										},
										{
											"begin": 14,
											"end": 262,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 82,
											"end": 88,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 90,
											"end": 96,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 143,
											"end": 145,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 131,
											"end": 140,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 122,
											"end": 129,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 118,
											"end": 141,
											"name": "SUB",
											"source": 1
										},
										{
											"begin": 114,
											"end": 146,
											"name": "SLT",
											"source": 1
										},
										{
											"begin": 111,
											"end": 163,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 111,
											"end": 163,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "21"
										},
										{
											"begin": 111,
											"end": 163,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 159,
											"end": 160,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 156,
											"end": 157,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 149,
											"end": 161,
											"name": "REVERT",
											"source": 1
										},
										{
											"begin": 111,
											"end": 163,
											"name": "tag",
											"source": 1,
											"value": "21"
										},
										{
											"begin": 111,
											"end": 163,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 182,
											"end": 205,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 182,
											"end": 205,
											"name": "CALLDATALOAD",
											"source": 1
										},
										{
											"begin": 182,
											"end": 205,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 252,
											"end": 254,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 237,
											"end": 255,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 237,
											"end": 255,
											"name": "SWAP2",
											"source": 1
										},
										{
											"begin": 237,
											"end": 255,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 224,
											"end": 256,
											"name": "CALLDATALOAD",
											"source": 1
										},
										{
											"begin": 224,
											"end": 256,
											"name": "SWAP2",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 14,
											"end": 262,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										},
										{
											"begin": 449,
											"end": 674,
											"name": "tag",
											"source": 1,
											"value": "15"
										},
										{
											"begin": 449,
											"end": 674,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 489,
											"end": 492,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 520,
											"end": 521,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 516,
											"end": 522,
											"name": "NOT",
											"source": 1
										},
										{
											"begin": 513,
											"end": 514,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 510,
											"end": 523,
											"name": "GT",
											"source": 1
										},
										{
											"begin": 507,
											"end": 643,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 507,
											"end": 643,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "24"
										},
										{
											"begin": 507,
											"end": 643,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 565,
											"end": 575,
											"name": "PUSH",
											"source": 1,
											"value": "4E487B71"
										},
										{
											"begin": 560,
											"end": 563,
											"name": "PUSH",
											"source": 1,
											"value": "E0"
										},
										{
											"begin": 556,
											"end": 576,
											"name": "SHL",
											"source": 1
										},
										{
											"begin": 553,
											"end": 554,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 546,
											"end": 577,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 600,
											"end": 604,
											"name": "PUSH",
											"source": 1,
											"value": "11"
										},
										{
											"begin": 597,
											"end": 598,
											"name": "PUSH",
											"source": 1,
											"value": "4"
										},
										{
											"begin": 590,
											"end": 605,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 628,
											"end": 632,
											"name": "PUSH",
											"source": 1,
											"value": "24"
										},
										{
											"begin": 625,
											"end": 626,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 618,
											"end": 633,
											"name": "REVERT",
											"source": 1
										},
										{
											"begin": 507,
											"end": 643,
											"name": "tag",
											"source": 1,
											"value": "24"
										},
										{
											"begin": 507,
											"end": 643,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 659,
											"end": 668,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 659,
											"end": 668,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 449,
											"end": 674,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										}
									]
								}
							}
						},
						"methodIdentifiers": {
							"testAdd(uint256,uint256)": "7c3ffef2"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"testAdd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"TestSafeMathMonkeyPatch\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27\",\"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				}
			}
		},
		"sources": {
			"contracts/Libraries.sol": {
				"ast": {
					"absolutePath": "contracts/Libraries.sol",
					"exportedSymbols": {
						"Math": [
							55
						],
						"SafeMath": [
							27
						],
						"TestSafeMathAsLibrary": [
							72
						],
						"TestSafeMathMonkeyPatch": [
							91
						]
					},
					"id": 92,
					"license": "MIT",
					"nodeType": "SourceUnit",
					"nodes": [
						{
							"id": 1,
							"literals": [
								"solidity",
								"^",
								"0.8",
								".13"
							],
							"nodeType": "PragmaDirective",
							"src": "33:24:0"
						},
						{
							"abstract": false,
							"baseContracts": [],
							"canonicalName": "SafeMath",
							"contractDependencies": [],
							"contractKind": "library",
							"fullyImplemented": true,
							"id": 27,
							"linearizedBaseContracts": [
								27
							],
							"name": "SafeMath",
							"nameLocation": "67:8:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"body": {
										"id": 25,
										"nodeType": "Block",
										"src": "140:92:0",
										"statements": [
											{
												"assignments": [
													11
												],
												"declarations": [
													{
														"constant": false,
														"id": 11,
														"mutability": "mutable",
														"name": "z",
														"nameLocation": "155:1:0",
														"nodeType": "VariableDeclaration",
														"scope": 25,
														"src": "150:6:0",
														"stateVariable": false,
														"storageLocation": "default",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														},
														"typeName": {
															"id": 10,
															"name": "uint",
															"nodeType": "ElementaryTypeName",
															"src": "150:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														},
														"visibility": "internal"
													}
												],
												"id": 15,
												"initialValue": {
													"commonType": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													},
													"id": 14,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftExpression": {
														"id": 12,
														"name": "x",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 3,
														"src": "159:1:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "BinaryOperation",
													"operator": "+",
													"rightExpression": {
														"id": 13,
														"name": "y",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 5,
														"src": "163:1:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "159:5:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"nodeType": "VariableDeclarationStatement",
												"src": "150:14:0"
											},
											{
												"expression": {
													"arguments": [
														{
															"commonType": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															},
															"id": 19,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"leftExpression": {
																"id": 17,
																"name": "z",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 11,
																"src": "182:1:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"nodeType": "BinaryOperation",
															"operator": ">=",
															"rightExpression": {
																"id": 18,
																"name": "x",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 3,
																"src": "187:1:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"src": "182:6:0",
															"typeDescriptions": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															}
														},
														{
															"hexValue": "75696e74206f766572666c6f77",
															"id": 20,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "string",
															"lValueRequested": false,
															"nodeType": "Literal",
															"src": "190:15:0",
															"typeDescriptions": {
																"typeIdentifier": "t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f",
																"typeString": "literal_string \"uint overflow\""
															},
															"value": "uint overflow"
														}
													],
													"expression": {
														"argumentTypes": [
															{
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															},
															{
																"typeIdentifier": "t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f",
																"typeString": "literal_string \"uint overflow\""
															}
														],
														"id": 16,
														"name": "require",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															4294967278,
															4294967278
														],
														"referencedDeclaration": 4294967278,
														"src": "174:7:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
															"typeString": "function (bool,string memory) pure"
														}
													},
													"id": 21,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "174:32:0",
													"tryCall": false,
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 22,
												"nodeType": "ExpressionStatement",
												"src": "174:32:0"
											},
											{
												"expression": {
													"id": 23,
													"name": "z",
													"nodeType": "Identifier",
													"overloadedDeclarations": [],
													"referencedDeclaration": 11,
													"src": "224:1:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"functionReturnParameters": 9,
												"id": 24,
												"nodeType": "Return",
												"src": "217:8:0"
											}
										]
									},
									"id": 26,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "add",
									"nameLocation": "91:3:0",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 6,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 3,
												"mutability": "mutable",
												"name": "x",
												"nameLocation": "100:1:0",
												"nodeType": "VariableDeclaration",
												"scope": 26,
												"src": "95:6:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 2,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "95:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 5,
												"mutability": "mutable",
												"name": "y",
												"nameLocation": "108:1:0",
												"nodeType": "VariableDeclaration",
												"scope": 26,
												"src": "103:6:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 4,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "103:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "94:16:0"
									},
									"returnParameters": {
										"id": 9,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 8,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 26,
												"src": "134:4:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 7,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "134:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "133:6:0"
									},
									"scope": 27,
									"src": "82:150:0",
									"stateMutability": "pure",
									"virtual": false,
									"visibility": "internal"
								}
							],
							"scope": 92,
							"src": "59:175:0",
							"usedErrors": []
						},
						{
							"abstract": false,
							"baseContracts": [],
							"canonicalName": "Math",
							"contractDependencies": [],
							"contractKind": "library",
							"fullyImplemented": true,
							"id": 55,
							"linearizedBaseContracts": [
								55
							],
							"name": "Math",
							"nameLocation": "244:4:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"body": {
										"id": 53,
										"nodeType": "Block",
										"src": "318:120:0",
										"statements": [
											{
												"assignments": [
													37
												],
												"declarations": [
													{
														"constant": false,
														"id": 37,
														"mutability": "mutable",
														"name": "c",
														"nameLocation": "336:1:0",
														"nodeType": "VariableDeclaration",
														"scope": 53,
														"src": "328:9:0",
														"stateVariable": false,
														"storageLocation": "default",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														},
														"typeName": {
															"id": 36,
															"name": "uint256",
															"nodeType": "ElementaryTypeName",
															"src": "328:7:0",
															"typeDescriptions": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														},
														"visibility": "internal"
													}
												],
												"id": 41,
												"initialValue": {
													"commonType": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													},
													"id": 40,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftExpression": {
														"id": 38,
														"name": "a",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 29,
														"src": "340:1:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "BinaryOperation",
													"operator": "*",
													"rightExpression": {
														"id": 39,
														"name": "b",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 31,
														"src": "344:1:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "340:5:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"nodeType": "VariableDeclarationStatement",
												"src": "328:17:0"
											},
											{
												"expression": {
													"arguments": [
														{
															"commonType": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															},
															"id": 47,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"leftExpression": {
																"commonType": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																},
																"id": 45,
																"isConstant": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"leftExpression": {
																	"id": 43,
																	"name": "c",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 37,
																	"src": "363:1:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_uint256",
																		"typeString": "uint256"
																	}
																},
																"nodeType": "BinaryOperation",
																"operator": "/",
																"rightExpression": {
																	"id": 44,
																	"name": "a",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 29,
																	"src": "367:1:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_uint256",
																		"typeString": "uint256"
																	}
																},
																"src": "363:5:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"nodeType": "BinaryOperation",
															"operator": "==",
															"rightExpression": {
																"id": 46,
																"name": "b",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 31,
																"src": "372:1:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"src": "363:10:0",
															"typeDescriptions": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															}
														},
														{
															"hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
															"id": 48,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "string",
															"lValueRequested": false,
															"nodeType": "Literal",
															"src": "375:35:0",
															"typeDescriptions": {
																"typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
																"typeString": "literal_string \"SafeMath: multiplication overflow\""
															},
															"value": "SafeMath: multiplication overflow"
														}
													],
													"expression": {
														"argumentTypes": [
															{
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															},
															{
																"typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
																"typeString": "literal_string \"SafeMath: multiplication overflow\""
															}
														],
														"id": 42,
														"name": "require",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															4294967278,
															4294967278
														],
														"referencedDeclaration": 4294967278,
														"src": "355:7:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
															"typeString": "function (bool,string memory) pure"
														}
													},
													"id": 49,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "355:56:0",
													"tryCall": false,
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 50,
												"nodeType": "ExpressionStatement",
												"src": "355:56:0"
											},
											{
												"expression": {
													"id": 51,
													"name": "c",
													"nodeType": "Identifier",
													"overloadedDeclarations": [],
													"referencedDeclaration": 37,
													"src": "429:1:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"functionReturnParameters": 35,
												"id": 52,
												"nodeType": "Return",
												"src": "422:8:0"
											}
										]
									},
									"id": 54,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "multiply",
									"nameLocation": "264:8:0",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 32,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 29,
												"mutability": "mutable",
												"name": "a",
												"nameLocation": "278:1:0",
												"nodeType": "VariableDeclaration",
												"scope": 54,
												"src": "273:6:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 28,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "273:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 31,
												"mutability": "mutable",
												"name": "b",
												"nameLocation": "286:1:0",
												"nodeType": "VariableDeclaration",
												"scope": 54,
												"src": "281:6:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 30,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "281:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "272:16:0"
									},
									"returnParameters": {
										"id": 35,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 34,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 54,
												"src": "312:4:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 33,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "312:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "311:6:0"
									},
									"scope": 55,
									"src": "255:183:0",
									"stateMutability": "pure",
									"virtual": false,
									"visibility": "internal"
								}
							],
							"scope": 92,
							"src": "236:204:0",
							"usedErrors": []
						},
						{
							"abstract": false,
							"baseContracts": [],
							"canonicalName": "TestSafeMathAsLibrary",
							"contractDependencies": [],
							"contractKind": "contract",
							"fullyImplemented": true,
							"id": 72,
							"linearizedBaseContracts": [
								72
							],
							"name": "TestSafeMathAsLibrary",
							"nameLocation": "451:21:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"body": {
										"id": 70,
										"nodeType": "Block",
										"src": "544:43:0",
										"statements": [
											{
												"expression": {
													"arguments": [
														{
															"id": 66,
															"name": "a",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 57,
															"src": "575:1:0",
															"typeDescriptions": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														},
														{
															"id": 67,
															"name": "b",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 59,
															"src": "578:1:0",
															"typeDescriptions": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														}
													],
													"expression": {
														"argumentTypes": [
															{
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															},
															{
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														],
														"expression": {
															"id": 64,
															"name": "Math",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 55,
															"src": "561:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_type$_t_contract$_Math_$55_$",
																"typeString": "type(library Math)"
															}
														},
														"id": 65,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"lValueRequested": false,
														"memberName": "multiply",
														"nodeType": "MemberAccess",
														"referencedDeclaration": 54,
														"src": "561:13:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
															"typeString": "function (uint256,uint256) pure returns (uint256)"
														}
													},
													"id": 68,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "561:19:0",
													"tryCall": false,
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"functionReturnParameters": 63,
												"id": 69,
												"nodeType": "Return",
												"src": "554:26:0"
											}
										]
									},
									"functionSelector": "042116f1",
									"id": 71,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "testMultiply",
									"nameLocation": "488:12:0",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 60,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 57,
												"mutability": "mutable",
												"name": "a",
												"nameLocation": "506:1:0",
												"nodeType": "VariableDeclaration",
												"scope": 71,
												"src": "501:6:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 56,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "501:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 59,
												"mutability": "mutable",
												"name": "b",
												"nameLocation": "514:1:0",
												"nodeType": "VariableDeclaration",
												"scope": 71,
												"src": "509:6:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 58,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "509:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "500:16:0"
									},
									"returnParameters": {
										"id": 63,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 62,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 71,
												"src": "538:4:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 61,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "538:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "537:6:0"
									},
									"scope": 72,
									"src": "479:108:0",
									"stateMutability": "pure",
									"virtual": false,
									"visibility": "public"
								}
							],
							"scope": 92,
							"src": "442:147:0",
							"usedErrors": []
						},
						{
							"abstract": false,
							"baseContracts": [],
							"canonicalName": "TestSafeMathMonkeyPatch",
							"contractDependencies": [],
							"contractKind": "contract",
							"fullyImplemented": true,
							"id": 91,
							"linearizedBaseContracts": [
								91
							],
							"name": "TestSafeMathMonkeyPatch",
							"nameLocation": "600:23:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"global": false,
									"id": 75,
									"libraryName": {
										"id": 73,
										"name": "SafeMath",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 27,
										"src": "636:8:0"
									},
									"nodeType": "UsingForDirective",
									"src": "630:24:0",
									"typeName": {
										"id": 74,
										"name": "uint",
										"nodeType": "ElementaryTypeName",
										"src": "649:4:0",
										"typeDescriptions": {
											"typeIdentifier": "t_uint256",
											"typeString": "uint256"
										}
									}
								},
								{
									"body": {
										"id": 89,
										"nodeType": "Block",
										"src": "720:32:0",
										"statements": [
											{
												"expression": {
													"arguments": [
														{
															"id": 86,
															"name": "y",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 79,
															"src": "743:1:0",
															"typeDescriptions": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														}
													],
													"expression": {
														"argumentTypes": [
															{
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														],
														"expression": {
															"id": 84,
															"name": "x",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 77,
															"src": "737:1:0",
															"typeDescriptions": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														},
														"id": 85,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"lValueRequested": false,
														"memberName": "add",
														"nodeType": "MemberAccess",
														"referencedDeclaration": 26,
														"src": "737:5:0",
														"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": 87,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "737:8:0",
													"tryCall": false,
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"functionReturnParameters": 83,
												"id": 88,
												"nodeType": "Return",
												"src": "730:15:0"
											}
										]
									},
									"functionSelector": "7c3ffef2",
									"id": 90,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "testAdd",
									"nameLocation": "669:7:0",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 80,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 77,
												"mutability": "mutable",
												"name": "x",
												"nameLocation": "682:1:0",
												"nodeType": "VariableDeclaration",
												"scope": 90,
												"src": "677:6:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 76,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "677:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 79,
												"mutability": "mutable",
												"name": "y",
												"nameLocation": "690:1:0",
												"nodeType": "VariableDeclaration",
												"scope": 90,
												"src": "685:6:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 78,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "685:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "676:16:0"
									},
									"returnParameters": {
										"id": 83,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 82,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 90,
												"src": "714:4:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 81,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "714:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "713:6:0"
									},
									"scope": 91,
									"src": "660:92:0",
									"stateMutability": "pure",
									"virtual": false,
									"visibility": "public"
								}
							],
							"scope": 92,
							"src": "591:163:0",
							"usedErrors": []
						}
					],
					"src": "33:721:0"
				},
				"id": 0
			}
		}
	}
}