@etherisc/gif-contracts
Version:
This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.
1,765 lines • 82 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_logic",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"stateMutability": "payable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"allSourcePaths": {
"21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol",
"23": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/StorageSlot.sol",
"5": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/interfaces/draft-IERC1822.sol",
"6": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"7": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Upgrade.sol",
"8": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/Proxy.sol",
"9": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/beacon/IBeacon.sol"
},
"ast": {
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"exportedSymbols": {
"Address": [
26374
],
"ERC1967Proxy": [
24111
],
"ERC1967Upgrade": [
27521
],
"IBeacon": [
28646
],
"IERC1822Proxiable": [
28636
],
"Proxy": [
27573
],
"StorageSlot": [
28706
]
},
"id": 24112,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 24076,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "114:23:6"
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/Proxy.sol",
"file": "../Proxy.sol",
"id": 24077,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 24112,
"sourceUnit": 27574,
"src": "139:22:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Upgrade.sol",
"file": "./ERC1967Upgrade.sol",
"id": 24078,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 24112,
"sourceUnit": 27522,
"src": "162:30:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 24080,
"name": "Proxy",
"nodeType": "IdentifierPath",
"referencedDeclaration": 27573,
"src": "592:5:6"
},
"id": 24081,
"nodeType": "InheritanceSpecifier",
"src": "592:5:6"
},
{
"baseName": {
"id": 24082,
"name": "ERC1967Upgrade",
"nodeType": "IdentifierPath",
"referencedDeclaration": 27521,
"src": "599:14:6"
},
"id": 24083,
"nodeType": "InheritanceSpecifier",
"src": "599:14:6"
}
],
"contractDependencies": [
27521,
27573
],
"contractKind": "contract",
"documentation": {
"id": 24079,
"nodeType": "StructuredDocumentation",
"src": "194:372:6",
"text": " @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."
},
"fullyImplemented": true,
"id": 24111,
"linearizedBaseContracts": [
24111,
27521,
27573
],
"name": "ERC1967Proxy",
"nameLocation": "576:12:6",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 24097,
"nodeType": "Block",
"src": "1014:56:6",
"statements": [
{
"expression": {
"arguments": [
{
"id": 24092,
"name": "_logic",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24086,
"src": "1042:6:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 24093,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24088,
"src": "1050:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"hexValue": "66616c7365",
"id": 24094,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1057:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 24091,
"name": "_upgradeToAndCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27304,
"src": "1024:17:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
"typeString": "function (address,bytes memory,bool)"
}
},
"id": 24095,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1024:39:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 24096,
"nodeType": "ExpressionStatement",
"src": "1024:39:6"
}
]
},
"documentation": {
"id": 24084,
"nodeType": "StructuredDocumentation",
"src": "620:333:6",
"text": " @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializing the storage of the proxy like a Solidity constructor."
},
"id": 24098,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 24089,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 24086,
"mutability": "mutable",
"name": "_logic",
"nameLocation": "978:6:6",
"nodeType": "VariableDeclaration",
"scope": 24098,
"src": "970:14:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 24085,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "970:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 24088,
"mutability": "mutable",
"name": "_data",
"nameLocation": "999:5:6",
"nodeType": "VariableDeclaration",
"scope": 24098,
"src": "986:18:6",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 24087,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "986:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "969:36:6"
},
"returnParameters": {
"id": 24090,
"nodeType": "ParameterList",
"parameters": [],
"src": "1014:0:6"
},
"scope": 24111,
"src": "958:112:6",
"stateMutability": "payable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
27538
],
"body": {
"id": 24109,
"nodeType": "Block",
"src": "1229:59:6",
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 24105,
"name": "ERC1967Upgrade",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27521,
"src": "1246:14:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC1967Upgrade_$27521_$",
"typeString": "type(contract ERC1967Upgrade)"
}
},
"id": 24106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "_getImplementation",
"nodeType": "MemberAccess",
"referencedDeclaration": 27235,
"src": "1246:33:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 24107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1246:35:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 24104,
"id": 24108,
"nodeType": "Return",
"src": "1239:42:6"
}
]
},
"documentation": {
"id": 24099,
"nodeType": "StructuredDocumentation",
"src": "1076:67:6",
"text": " @dev Returns the current implementation address."
},
"id": 24110,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_implementation",
"nameLocation": "1157:15:6",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 24101,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1197:8:6"
},
"parameters": {
"id": 24100,
"nodeType": "ParameterList",
"parameters": [],
"src": "1172:2:6"
},
"returnParameters": {
"id": 24104,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 24103,
"mutability": "mutable",
"name": "impl",
"nameLocation": "1223:4:6",
"nodeType": "VariableDeclaration",
"scope": 24110,
"src": "1215:12:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 24102,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1215:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1214:14:6"
},
"scope": 24111,
"src": "1148:140:6",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
}
],
"scope": 24112,
"src": "567:723:6"
}
],
"src": "114:1177:6"
},
"bytecode": "608060405260405161071c38038061071c833981016040819052610022916102d2565b61002e82826000610035565b505061042c565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106f5602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c919061039b565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103b7565b600080604083850312156102e4578182fd5b82516001600160a01b03811681146102fa578283fd5b60208401519092506001600160401b0380821115610316578283fd5b818501915085601f830112610329578283fd5b81518181111561033b5761033b610416565b604051601f8201601f19908116603f0116810190838211818310171561036357610363610416565b8160405282815288602084870101111561037b578586fd5b61038c8360208301602088016103ea565b80955050505050509250929050565b600082516103ad8184602087016103ea565b9190910192915050565b60006020825282518060208401526103d68160408501602087016103ea565b601f01601f19169190910160400192915050565b60005b838110156104055781810151838201526020016103ed565b838111156100645750506000910152565b634e487b7160e01b600052604160045260246000fd5b6102ba8061043b6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b91906101de565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b815260040161012791906101fa565b600082516101f081846020870161022d565b9190910192915050565b600060208252825180602084015261021981604085016020870161022d565b601f01601f19169190910160400192915050565b60005b83811015610248578181015183820152602001610230565b83811115610257576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200722adea085ea2a3f54d4cd1485208a79f2bd27a52da5f5b6b92ccc21599cbd864736f6c63430008020033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"compiler": {
"evm_version": "istanbul",
"optimizer": {
"enabled": true,
"runs": 200
},
"version": "0.8.2+commit.661d1103"
},
"contractName": "ERC1967Proxy",
"coverageMap": {
"branches": {
"21": {
"Address.verifyCallResult": {
"11": [
7735,
7742,
false
],
"12": [
7876,
7897,
false
]
}
},
"23": {},
"5": {},
"6": {},
"7": {},
"8": {},
"9": {}
},
"statements": {
"21": {
"Address.functionDelegateCall": {
"3": [
6677,
6761
],
"7": [
7119,
7188
],
"8": [
7276,
7334
]
},
"Address.isContract": {
"4": [
1458,
1488
]
},
"Address.verifyCallResult": {
"9": [
7758,
7775
],
"10": [
8252,
8272
]
}
},
"23": {},
"5": {},
"6": {
"ERC1967Proxy._implementation": {
"5": [
1239,
1281
]
}
},
"7": {
"ERC1967Upgrade._getImplementation": {
"6": [
1373,
1434
]
}
},
"8": {
"Proxy.<fallback>": {
"1": [
2675,
2686
]
},
"Proxy.<receive>": {
"0": [
2898,
2909
]
},
"Proxy._fallback": {
"2": [
2397,
2425
]
}
},
"9": {}
}
},
"dependencies": [
"OpenZeppelin/openzeppelin-contracts@4.7.3/Address",
"OpenZeppelin/openzeppelin-contracts@4.7.3/ERC1967Upgrade",
"OpenZeppelin/openzeppelin-contracts@4.7.3/IBeacon",
"OpenZeppelin/openzeppelin-contracts@4.7.3/IERC1822Proxiable",
"OpenZeppelin/openzeppelin-contracts@4.7.3/Proxy",
"OpenZeppelin/openzeppelin-contracts@4.7.3/StorageSlot"
],
"deployedBytecode": "60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b91906101de565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b815260040161012791906101fa565b600082516101f081846020870161022d565b9190910192915050565b600060208252825180602084015261021981604085016020870161022d565b601f01601f19169190910160400192915050565b60005b83811015610248578181015183820152602001610230565b83811115610257576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200722adea085ea2a3f54d4cd1485208a79f2bd27a52da5f5b6b92ccc21599cbd864736f6c63430008020033",
"deployedSourceMap": "567:723:6:-:0;;;;;;2898:11:8;:9;:11::i;:::-;567:723:6;;2675:11:8;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6570:198:21:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:21:o;1175:320::-;-1:-1:-1;;;;;1465:19:21;;:23;;;1175:320::o;1614:190:23:-;1784:4;1760:38::o;1148:140:6:-;1215:12;1246:35;1030:66:7;1380:54;-1:-1:-1;;;;;1380:54:7;;1301:140;1246:35:6;1239:42;;1148:140;:::o;948:895:8:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;6954:387:21;7095:12;-1:-1:-1;;;;;1465:19:21;;;7119:69;;;;-1:-1:-1;;;7119:69:21;;883:2:103;7119:69:21;;;865:21:103;922:2;902:18;;;895:30;961:34;941:18;;;934:62;-1:-1:-1;;;1012:18:103;;;1005:36;1058:19;;7119:69:21;;;;;;;;;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:21;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:21:o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:21;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;8069:145;8259:12;8252:20;;-1:-1:-1;;;8252:20:21;;;;;;;;:::i;14:274:103:-;;181:6;175:13;197:53;243:6;238:3;231:4;223:6;219:17;197:53;:::i;:::-;266:16;;;;;151:137;-1:-1:-1;;151:137:103:o;293:383::-;;442:2;431:9;424:21;474:6;468:13;517:6;512:2;501:9;497:18;490:34;533:66;592:6;587:2;576:9;572:18;567:2;559:6;555:15;533:66;:::i;:::-;660:2;639:15;-1:-1:-1;;635:29:103;620:45;;;;667:2;616:54;;414:262;-1:-1:-1;;414:262:103:o;1088:258::-;1160:1;1170:113;1184:6;1181:1;1178:13;1170:113;;;1260:11;;;1254:18;1241:11;;;1234:39;1206:2;1199:10;1170:113;;;1301:6;1298:1;1295:13;1292:2;;;1336:1;1327:6;1322:3;1318:16;1311:27;1292:2;;1141:205;;;:::o",
"language": "Solidity",
"natspec": {
"details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.",
"kind": "dev",
"methods": {
"constructor": {
"details": "Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."
}
},
"version": 1
},
"offset": [
567,
1290
],
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x130 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x14B SWAP2 SWAP1 PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x19B DUP3 DUP3 DUP7 PUSH2 0x1A5 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1B4 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1C4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1F0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x22D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x219 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x248 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x230 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x257 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212200722AD 0xEA ADDMOD 0x5E LOG2 LOG3 CREATE2 0x4D 0x4C 0xD1 0x48 MSTORE ADDMOD 0xA7 SWAP16 0x2B 0xD2 PUSH27 0x52DA5F5B6B92CCC21599CBD864736F6C6343000802003300000000 ",
"pcMap": {
"0": {
"offset": [
567,
1290
],
"op": "PUSH1",
"path": "6",
"value": "0x80"
},
"2": {
"fn": null,
"offset": [
567,
1290
],
"op": "PUSH1",
"path": "6",
"value": "0x40"
},
"4": {
"fn": null,
"offset": [
567,
1290
],
"op": "MSTORE",
"path": "6"
},
"5": {
"fn": null,
"offset": [
567,
1290
],
"op": "CALLDATASIZE",
"path": "6"
},
"6": {
"fn": null,
"offset": [
567,
1290
],
"op": "PUSH2",
"path": "6",
"value": "0x13"
},
"9": {
"fn": null,
"offset": [
567,
1290
],
"op": "JUMPI",
"path": "6"
},
"10": {
"fn": "Proxy.<receive>",
"offset": [
2898,
2909
],
"op": "PUSH2",
"path": "8",
"statement": 0,
"value": "0x11"
},
"13": {
"fn": "Proxy.<receive>",
"offset": [
2898,
2907
],
"op": "PUSH2",
"path": "8",
"value": "0x17"
},
"16": {
"fn": "Proxy.<receive>",
"jump": "i",
"offset": [
2898,
2909
],
"op": "JUMP",
"path": "8"
},
"17": {
"fn": "Proxy.<receive>",
"offset": [
2898,
2909
],
"op": "JUMPDEST",
"path": "8"
},
"18": {
"offset": [
567,
1290
],
"op": "STOP",
"path": "6"
},
"19": {
"fn": "Proxy.<receive>",
"offset": [
567,
1290
],
"op": "JUMPDEST",
"path": "6"
},
"20": {
"fn": "Proxy.<fallback>",
"offset": [
2675,
2686
],
"op": "PUSH2",
"path": "8",
"statement": 1,
"value": "0x11"
},
"23": {
"fn": "Proxy._fallback",
"offset": [
2322,
2432
],
"op": "JUMPDEST",
"path": "8"
},
"24": {
"fn": "Proxy._fallback",
"offset": [
2397,
2425
],
"op": "PUSH2",
"path": "8",
"statement": 2,
"value": "0x27"
},
"27": {
"fn": "Proxy._fallback",
"offset": [
2407,
2424
],
"op": "PUSH2",
"path": "8",
"value": "0x22"
},
"30": {
"fn": "Proxy._fallback",
"offset": [
2407,
2422
],
"op": "PUSH2",
"path": "8",
"value": "0x67"
},
"33": {
"fn": "Proxy._fallback",
"jump": "i",
"offset": [
2407,
2424
],
"op": "JUMP",
"path": "8"
},
"34": {
"fn": "Proxy._fallback",
"offset": [
2407,
2424
],
"op": "JUMPDEST",
"path": "8"
},
"35": {
"fn": "Proxy._fallback",
"offset": [
2397,
2406
],
"op": "PUSH2",
"path": "8",
"value": "0x9F"
},
"38": {
"fn": "Proxy._fallback",
"jump": "i",
"offset": [
2397,
2425
],
"op": "JUMP",
"path": "8"
},
"39": {
"fn": "Proxy._fallback",
"offset": [
2397,
2425
],
"op": "JUMPDEST",
"path": "8"
},
"40": {
"fn": "Proxy._fallback",
"jump": "o",
"offset": [
2322,
2432
],
"op": "JUMP",
"path": "8"
},
"41": {
"fn": "Address.functionDelegateCall",
"offset": [
6570,
6768
],
"op": "JUMPDEST",
"path": "21"
},
"42": {
"fn": "Address.functionDelegateCall",
"offset": [
6653,
6665
],
"op": "PUSH1",
"path": "21",
"value": "0x60"
},
"44": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "PUSH2",
"path": "21",
"statement": 3,
"value": "0x4E"
},
"47": {
"fn": "Address.functionDelegateCall",
"offset": [
6705,
6711
],
"op": "DUP4",
"path": "21"
},
"48": {
"fn": "Address.functionDelegateCall",
"offset": [
6713,
6717
],
"op": "DUP4",
"path": "21"
},
"49": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "PUSH1",
"path": "21",
"value": "0x40"
},
"51": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "MLOAD",
"path": "21"
},
"52": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "DUP1",
"path": "21"
},
"53": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "PUSH1",
"path": "21",
"value": "0x60"
},
"55": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "ADD",
"path": "21"
},
"56": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "PUSH1",
"path": "21",
"value": "0x40"
},
"58": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "MSTORE",
"path": "21"
},
"59": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "DUP1",
"path": "21"
},
"60": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "PUSH1",
"path": "21",
"value": "0x27"
},
"62": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "DUP2",
"path": "21"
},
"63": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "MSTORE",
"path": "21"
},
"64": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "PUSH1",
"path": "21",
"value": "0x20"
},
"66": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "ADD",
"path": "21"
},
"67": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "PUSH2",
"path": "21",
"value": "0x25E"
},
"70": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "PUSH1",
"path": "21",
"value": "0x27"
},
"72": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "SWAP2",
"path": "21"
},
"73": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "CODECOPY",
"path": "21"
},
"74": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6704
],
"op": "PUSH2",
"path": "21",
"value": "0xC3"
},
"77": {
"fn": "Address.functionDelegateCall",
"jump": "i",
"offset": [
6684,
6761
],
"op": "JUMP",
"path": "21"
},
"78": {
"fn": "Address.functionDelegateCall",
"offset": [
6684,
6761
],
"op": "JUMPDEST",
"path": "21"
},
"79": {
"fn": "Address.functionDelegateCall",
"offset": [
6677,
6761
],
"op": "SWAP4",
"path": "21"
},
"80": {
"fn": "Address.functionDelegateCall",
"offset": [
6570,
6768
],
"op": "SWAP3",
"path": "21"
},
"81": {
"op": "POP"
},
"82": {
"op": "POP"
},
"83": {
"op": "POP"
},
"84": {
"fn": "Address.functionDelegateCall",
"jump": "o",
"offset": [
6570,
6768
],
"op": "JUMP",
"path": "21"
},
"85": {
"fn": "Address.isContract",
"offset": [
1175,
1495
],
"op": "JUMPDEST",
"path": "21"
},
"86": {
"op": "PUSH1",
"value": "0x1"
},
"88": {
"op": "PUSH1",
"value": "0x1"
},
"90": {
"op": "PUSH1",
"value": "0xA0"
},
"92": {
"op": "SHL"
},
"93": {
"op": "SUB"
},
"94": {
"fn": "Address.isContract",
"offset": [
1465,
1484
],
"op": "AND",
"path": "21",
"statement": 4
},
"95": {
"fn": "Address.isContract",
"offset": [
1465,
1484
],
"op": "EXTCODESIZE",
"path": "21"
},
"96": {
"fn": "Address.isContract",
"offset": [
1465,
1488
],
"op": "ISZERO",
"path": "21"
},
"97": {
"fn": "Address.isContract",
"offset": [
1465,
1488
],
"op": "ISZERO",
"path": "21"
},
"98": {
"fn": "Address.isContract",
"offset": [
1465,
1488
],
"op": "SWAP1",
"path": "21"
},
"99": {
"fn": "Address.isContract",
"jump": "o",
"offset": [
1175,
1495
],
"op": "JUMP",
"path": "21"
},
"100": {
"fn": "StorageSlot.getAddressSlot",
"offset": [
1614,
1804
],
"op": "JUMPDEST",
"path": "23"
},
"101": {
"fn": "StorageSlot.getAddressSlot",
"offset": [
1784,
1788
],
"op": "SWAP1",
"path": "23"
},
"102": {
"fn": "StorageSlot.getAddressSlot",
"jump": "o",
"offset": [
1760,
1798
],
"op": "JUMP",
"path": "23"
},
"103": {
"fn": "ERC1967Proxy._implementation",
"offset": [
1148,
1288
],
"op": "JUMPDEST",
"path": "6"
},
"104": {
"fn": "ERC1967Proxy._implementation",
"offset": [
1215,
1227
],
"op": "PUSH1",
"path": "6",
"value": "0x0"
},
"106": {
"fn": "ERC1967Proxy._implementation",
"offset": [
1246,
1281
],
"op": "PUSH2",
"path": "6",
"statement": 5,
"value": "0x9A"
},
"109": {
"offset": [
1030,
1096
],
"op": "PUSH32",
"path": "7",
"value": "0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC"
},
"142": {
"fn": "ERC1967Upgrade._getImplementation",
"offset": [
1380,
1434
],
"op": "SLOAD",
"path": "7",
"statement": 6
},
"143": {
"op": "PUSH1",
"value": "0x1"
},
"145": {
"op": "PUSH1",
"value": "0x1"
},
"147": {
"op": "PUSH1",
"value": "0xA0"
},
"149": {
"op": "SHL"
},
"150": {
"op": "SUB"
},
"151": {
"fn": "ERC1967Upgrade._getImplementation",
"offset": [
1380,
1434
],
"op": "AND",
"path": "7"
},
"152": {
"fn": "ERC1967Upgrade._getImplementation",
"offset": [
1380,
1434
],
"op": "SWAP1",
"path": "7"
},
"153": {
"fn": "ERC1967Upgrade._getImplementation",
"offset": [
1301,
1441
],
"op": "JUMP",
"path": "7"
},
"154": {
"fn": "ERC1967Proxy._implementation",
"offset": [
1246,
1281
],
"op": "JUMPDEST",
"path": "6"
},
"155": {
"fn": "ERC1967Proxy._implementation",
"offset": [
1239,
1281
],
"op": "SWAP1",
"path": "6"
},
"156": {
"fn": "ERC1967Proxy._implementation",
"offset": [
1239,
1281
],
"op": "POP",
"path": "6"
},
"157": {
"fn": "ERC1967Proxy._implementation",
"offset": [
1148,
1288
],
"op": "SWAP1",
"path": "6"
},
"158": {
"fn": "ERC1967Proxy._implementation",
"jump": "o",
"offset": [
1148,
1288
],
"op": "JUMP",
"path": "6"
},
"159": {
"fn": "Proxy._delegate",
"offset": [
948,
1843
],
"op": "JUMPDEST",
"path": "8"
},
"160": {
"fn": "Proxy._delegate",
"offset": [
1286,
1300
],
"op": "CALLDATASIZE",
"path": "8"
},
"161": {
"fn": "Proxy._delegate",
"offset": [
1283,
1284
],
"op": "PUSH1",
"path": "8",
"value": "0x0"
},
"163": {
"fn": "Proxy._delegate",
"offset": [
1280,
1281
],
"op": "DUP1",
"path": "8"
},
"164": {
"fn": "Proxy._delegate",
"offset": [
1267,
1301
],
"op": "CALLDATACOPY",
"path": "8"
},
"165": {
"fn": "Proxy._delegate",
"offset": [
1500,
1501
],
"op": "PUSH1",
"path": "8",
"value": "0x0"
},
"167": {
"fn": "Proxy._delegate",
"offset": [
1497,
1498
],
"op": "DUP1",
"path": "8"
},
"168": {
"fn": "Proxy._delegate",
"offset": [
1481,
1495
],
"op": "CALLDATASIZE",
"path": "8"
},
"169": {
"fn": "Proxy._delegate",
"offset": [
1478,
1479
],
"op": "PUSH1",
"path": "8",
"value": "0x0"
},
"171": {
"fn": "Proxy._delegate",
"offset": [
1462,
1476
],
"op": "DUP5",
"path": "8"
},
"172": {
"fn": "Proxy._delegate",
"offset": [
1455,
1460
],
"op": "GAS",
"path": "8"
},
"173": {
"fn": "Proxy._delegate",
"offset": [
1442,
1502
],
"op": "DELEGATECALL",
"path": "8"
},
"174": {
"fn": "Proxy._delegate",
"offset": [
1576,
1592
],
"op": "RETURNDATASIZE",
"path": "8"
},
"175": {
"fn": "Proxy._delegate",
"offset": [
1573,
1574
],
"op": "PUSH1",
"path": "8",
"value": "0x0"
},
"177": {
"fn": "Proxy._delegate",
"offset": [
1570,
1571
],
"op": "DUP1",
"path": "8"
},
"178": {
"fn": "Proxy._delegate",
"offset": [
1555,
1593
],
"op": "RETURNDATACOPY",
"path": "8"
},
"179": {
"fn": "Proxy._delegate",
"offset": [
1614,
1620
],
"op": "DUP1",
"path": "8"
},
"180": {
"fn": "Proxy._delegate",
"offset": [
1681,
1747
],
"op": "DUP1",
"path": "8"
},
"181": {
"fn": "Proxy._delegate",
"offset": [
1681,
1747
],
"op": "ISZERO",
"path": "8"
},
"182": {
"fn": "Proxy._delegate",
"offset": [
1681,
1747
],
"op": "PUSH2",
"path": "8",
"value": "0xBE"
},
"185": {
"fn": "Proxy._delegate",
"offset": [
1681,
1747
],
"op": "JUMPI",
"path": "8"
},
"186": {
"fn": "Proxy._delegate",
"offset": [
1796,
1812
],
"op": "RETURNDATASIZE",
"path": "8"
},
"187": {
"fn": "Proxy._delegate",
"offset": [
1793,
1794
],
"op": "PUSH1",
"path": "8",
"value": "0x0"
},
"189": {
"fn": "Proxy._delegate",
"offset": [
1786,
1813
],
"op": "RETURN",
"path": "8"
},
"190": {
"fn": "Proxy._delegate",
"offset": [
1681,
1747
],
"op": "JUMPDEST",
"path": "8"
},
"191": {
"fn": "Proxy._delegate",
"offset": [
1716,
1732
],
"op": "RETURNDATASIZE",
"path": "8"
},
"192": {
"fn": "Proxy._delegate",
"offset": [
1713,
1714
],
"op": "PUSH1",
"path": "8",
"value": "0x0"
},
"194": {
"fn": "Proxy._delegate",
"offset": [
1706,
1733
],
"op": "REVERT",
"path": "8"
},
"195": {
"fn": "Address.functionDelegateCall",
"offset": [
6954,
7341
],
"op": "JUMPDEST",
"path": "21"
},
"196": {
"fn": "Address.functionDelegateCall",
"offset": [
7095,
7107
],
"op": "PUSH1",
"path": "21",
"value": "0x60"
},
"198": {
"op": "PUSH1",
"value": "0x1"
},
"200": {
"op": "PUSH1",
"value": "0x1"
},
"202": {
"op": "PUSH1",
"value": "0xA0"
},
"204": {
"op": "SHL"
},
"205": {
"op": "SUB"
},
"206": {
"fn": "Address.isContract",
"offset": [
1465,
1484
],
"op": "DUP5",
"path": "21"
},
"207": {
"fn": "Address.isContract",
"offset": [
1465,
1484
],
"op": "AND",
"path": "21"
},
"208": {
"fn": "Address.isContract",
"offset": [
1465,
1484
],
"op": "EXTCODESIZE",
"path": "21"
},
"209": {
"fn": "Address.functionDelegateCall",
"offset": [
7119,
7188
],
"op": "PUSH2",
"path": "21",
"statement": 7,
"value": "0x130"
},
"212": {
"fn": "Address.functionDelegateCall",
"offset": [
7119,
7188
],
"op": "JUMPI",
"path": "21"
},
"213": {
"fn": "Address.functionDelegateCall",
"offset": [
7119,
7188
],
"op": "PUSH1",
"path": "21",
"value": "0x40"
},
"215": {
"fn": "Address.functionDelegateCall",
"offset": [
7119,
7188
],
"op": "MLOAD",
"path": "21"
},
"216": {
"op": "PUSH3",
"value": "0x461BCD"
},
"220": {
"op": "PUSH1",
"value": "0xE5"