@daostack/upgrades
Version:
Proxy upgadable contracts based on openzeppelin-sdk
680 lines (679 loc) • 34.6 kB
JSON
{
"fileName": "ProxyCreator.sol",
"contractName": "ProxyCreator",
"source": "pragma solidity ^0.6.0;\n// SPDX-License-Identifier: MIT\n\nimport \"../application/App.sol\";\nimport \"../Initializable.sol\";\n\ncontract ProxyCreator is Initializable {\n\n address public created;\n\n function initialize(App app, string memory packageName, string memory contractName, address admin, bytes memory data) public initializer {\n created = address(app.create(packageName, contractName, admin, data));\n }\n\n function name() public pure returns (string memory) {\n return \"ProxyCreator\";\n }\n\n}\n",
"sourcePath": "contracts/mocks/ProxyCreator.sol",
"sourceMap": "122:379:15:-:0;;;;;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "122:379:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;414:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;166:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;193:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;414:84;451:13;472:21;;;;;;;;;;;;;;;;;;;;;;;414:84;;:::o;166:22::-;;;;;;;;;;;;;:::o;193:217::-;1056:12:0;;;;;;;;;;;:31;;;;1072:15;:13;:15;;:::i;:::-;1056:31;:47;;;;1092:11;;;;;;;;;;;1091:12;1056:47;1048:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1161:19;1184:12;;;;;;;;;;;1183:13;1161:35;;1206:14;1202:80;;;1245:4;1230:12;;:19;;;;;;;;;;;;;;;;;;1271:4;1257:11;;:18;;;;;;;;;;;;;;;;;;1202:80;354:3:15::1;:10;;;365:11;378:12;392:5;399:4;354:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:7;;:69;;;;;;;;;;;;;;;;;;1288:1:0;1300:14:::0;1296:55;;;1339:5;1324:12;;:20;;;;;;;;;;;;;;;;;;1296:55;193:217:15;;;;;;;:::o;1441:498:0:-;1488:4;1829:12;1852:4;1829:28;;1863:10;1908:4;1896:17;1890:23;;1933:1;1927:2;:7;1920:14;;;;;;1441:498;;;;:::o",
"abi": [
{
"inputs": [],
"name": "created",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract App",
"name": "app",
"type": "address"
},
{
"internalType": "string",
"name": "packageName",
"type": "string"
},
{
"internalType": "string",
"name": "contractName",
"type": "string"
},
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"ast": {
"absolutePath": "contracts/mocks/ProxyCreator.sol",
"exportedSymbols": {
"ProxyCreator": [
4377
]
},
"id": 4378,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 4333,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:23:15"
},
{
"absolutePath": "contracts/application/App.sol",
"file": "../application/App.sol",
"id": 4334,
"nodeType": "ImportDirective",
"scope": 4378,
"sourceUnit": 355,
"src": "57:32:15",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "contracts/Initializable.sol",
"file": "../Initializable.sol",
"id": 4335,
"nodeType": "ImportDirective",
"scope": 4378,
"sourceUnit": 75,
"src": "90:30:15",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 4336,
"name": "Initializable",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 74,
"src": "147:13:15",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Initializable_$74",
"typeString": "contract Initializable"
}
},
"id": 4337,
"nodeType": "InheritanceSpecifier",
"src": "147:13:15"
}
],
"contractDependencies": [
74
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 4377,
"linearizedBaseContracts": [
4377,
74
],
"name": "ProxyCreator",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"functionSelector": "325a19f1",
"id": 4339,
"mutability": "mutable",
"name": "created",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4377,
"src": "166:22:15",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4338,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "166:7:15",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 4367,
"nodeType": "Block",
"src": "330:80:15",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4365,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4354,
"name": "created",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4339,
"src": "336:7:15",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4359,
"name": "packageName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4343,
"src": "365:11:15",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 4360,
"name": "contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4345,
"src": "378:12:15",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 4361,
"name": "admin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4347,
"src": "392:5:15",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4362,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4349,
"src": "399:4:15",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"argumentTypes": null,
"id": 4357,
"name": "app",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4341,
"src": "354:3:15",
"typeDescriptions": {
"typeIdentifier": "t_contract$_App_$354",
"typeString": "contract App"
}
},
"id": 4358,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "create",
"nodeType": "MemberAccess",
"referencedDeclaration": 353,
"src": "354:10:15",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_AdminUpgradeabilityProxy_$5849_$",
"typeString": "function (string memory,string memory,address,bytes memory) payable external returns (contract AdminUpgradeabilityProxy)"
}
},
"id": 4363,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "354:50:15",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_AdminUpgradeabilityProxy_$5849",
"typeString": "contract AdminUpgradeabilityProxy"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_AdminUpgradeabilityProxy_$5849",
"typeString": "contract AdminUpgradeabilityProxy"
}
],
"id": 4356,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "346:7:15",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 4355,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "346:7:15",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 4364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "346:59:15",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "336:69:15",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4366,
"nodeType": "ExpressionStatement",
"src": "336:69:15"
}
]
},
"documentation": null,
"functionSelector": "6f7b86be",
"id": 4368,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 4352,
"modifierName": {
"argumentTypes": null,
"id": 4351,
"name": "initializer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "318:11:15",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "318:11:15"
}
],
"name": "initialize",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 4350,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4341,
"mutability": "mutable",
"name": "app",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4368,
"src": "213:7:15",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_App_$354",
"typeString": "contract App"
},
"typeName": {
"contractScope": null,
"id": 4340,
"name": "App",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 354,
"src": "213:3:15",
"typeDescriptions": {
"typeIdentifier": "t_contract$_App_$354",
"typeString": "contract App"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4343,
"mutability": "mutable",
"name": "packageName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4368,
"src": "222:25:15",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 4342,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "222:6:15",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4345,
"mutability": "mutable",
"name": "contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4368,
"src": "249:26:15",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 4344,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "249:6:15",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4347,
"mutability": "mutable",
"name": "admin",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4368,
"src": "277:13:15",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4346,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "277:7:15",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4349,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4368,
"src": "292:17:15",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 4348,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "292:5:15",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "212:98:15"
},
"returnParameters": {
"id": 4353,
"nodeType": "ParameterList",
"parameters": [],
"src": "330:0:15"
},
"scope": 4377,
"src": "193:217:15",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 4375,
"nodeType": "Block",
"src": "466:32:15",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "50726f787943726561746f72",
"id": 4373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "479:14:15",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f386af0e192358159c576d9cb03b2fccac834c116b8b7298f6ce24e796a80da2",
"typeString": "literal_string \"ProxyCreator\""
},
"value": "ProxyCreator"
},
"functionReturnParameters": 4372,
"id": 4374,
"nodeType": "Return",
"src": "472:21:15"
}
]
},
"documentation": null,
"functionSelector": "06fdde03",
"id": 4376,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "name",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 4369,
"nodeType": "ParameterList",
"parameters": [],
"src": "427:2:15"
},
"returnParameters": {
"id": 4372,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4371,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4376,
"src": "451:13:15",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 4370,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "451:6:15",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "450:15:15"
},
"scope": 4377,
"src": "414:84:15",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"scope": 4378,
"src": "122:379:15"
}
],
"src": "0:502:15"
},
"bytecode": "0x60806040523480156100115760006000fd5b50610017565b6107a0806100266000396000f3fe60806040523480156100115760006000fd5b50600436106100465760003560e01c806306fdde031461004c578063325a19f1146100d05780636f7b86be1461011a57610046565b60006000fd5b610054610359565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100955780820151818401525b602081019050610079565b50505050905090810190601f1680156100c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100d861039e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610357600480360360a08110156101315760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561016f5760006000fd5b8201836020820111156101825760006000fd5b803590602001918460018302840111640100000000831117156101a55760006000fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509090919290909192908035906020019064010000000081111561020d5760006000fd5b8201836020820111156102205760006000fd5b803590602001918460018302840111640100000000831117156102435760006000fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050909091929090919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102cb5760006000fd5b8201836020820111156102de5760006000fd5b803590602001918460018302840111640100000000831117156103015760006000fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509090919290909192905050506103c4565b005b60606040518060400160405280600c81526020017f50726f787943726561746f720000000000000000000000000000000000000000815260200150905061039b565b90565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900460ff16806103e957506103e861071d63ffffffff16565b5b806104015750600060009054906101000a900460ff16155b1515610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061073d602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff1615905080156104aa576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b8573ffffffffffffffffffffffffffffffffffffffff1663cd3e318a868686866040518563ffffffff1660e01b81526004018080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001848103845288818151815260200191508051906020019080838360005b838110156105545780820151818401525b602081019050610538565b50505050905090810190601f1680156105815780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b838110156105bb5780820151818401525b60208101905061059f565b50505050905090810190601f1680156105e85780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b838110156106225780820151818401525b602081019050610606565b50505050905090810190601f16801561064f5780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1580156106745760006000fd5b505af1158015610689573d600060003e3d6000fd5b505050506040513d60208110156106a05760006000fd5b8101908080519060200190929190505050603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8015610714576000600060016101000a81548160ff0219169083151502179055505b505b5050505050565b600060003090506000813b905060008114925050506107395650505b9056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220a22079a0f2e81a2675bb161a8b7019530f8898e05cbab8e8b4701d269b8387f564736f6c634300060a0033",
"deployedBytecode": "0x60806040523480156100115760006000fd5b50600436106100465760003560e01c806306fdde031461004c578063325a19f1146100d05780636f7b86be1461011a57610046565b60006000fd5b610054610359565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100955780820151818401525b602081019050610079565b50505050905090810190601f1680156100c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100d861039e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610357600480360360a08110156101315760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561016f5760006000fd5b8201836020820111156101825760006000fd5b803590602001918460018302840111640100000000831117156101a55760006000fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509090919290909192908035906020019064010000000081111561020d5760006000fd5b8201836020820111156102205760006000fd5b803590602001918460018302840111640100000000831117156102435760006000fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050909091929090919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102cb5760006000fd5b8201836020820111156102de5760006000fd5b803590602001918460018302840111640100000000831117156103015760006000fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509090919290909192905050506103c4565b005b60606040518060400160405280600c81526020017f50726f787943726561746f720000000000000000000000000000000000000000815260200150905061039b565b90565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900460ff16806103e957506103e861071d63ffffffff16565b5b806104015750600060009054906101000a900460ff16155b1515610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061073d602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff1615905080156104aa576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b8573ffffffffffffffffffffffffffffffffffffffff1663cd3e318a868686866040518563ffffffff1660e01b81526004018080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001848103845288818151815260200191508051906020019080838360005b838110156105545780820151818401525b602081019050610538565b50505050905090810190601f1680156105815780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b838110156105bb5780820151818401525b60208101905061059f565b50505050905090810190601f1680156105e85780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b838110156106225780820151818401525b602081019050610606565b50505050905090810190601f16801561064f5780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1580156106745760006000fd5b505af1158015610689573d600060003e3d6000fd5b505050506040513d60208110156106a05760006000fd5b8101908080519060200190929190505050603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8015610714576000600060016101000a81548160ff0219169083151502179055505b505b5050505050565b600060003090506000813b905060008114925050506107395650505b9056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220a22079a0f2e81a2675bb161a8b7019530f8898e05cbab8e8b4701d269b8387f564736f6c634300060a0033",
"compiler": {
"name": "solc",
"version": "0.6.10+commit.00c0fcaf.Emscripten.clang",
"optimizer": {},
"evmVersion": "constantinople"
}
}