UNPKG

@newos/upgrades

Version:
853 lines (852 loc) 37 kB
{ "fileName": "InitializableMock.sol", "contractName": "InitializableMock", "source": "pragma solidity ^0.5.0;\n\nimport \"../Initializable.sol\";\n\n/**\n * @title InitializableMock\n * @dev This contract is a mock to test initializable functionality\n */\ncontract InitializableMock is Initializable {\n\n bool public initializerRan;\n uint256 public x;\n\n function initialize() public initializer {\n initializerRan = true;\n }\n\n function initializeNested() public initializer {\n initialize();\n }\n\n function initializeWithX(uint256 _x) public payable initializer {\n x = _x;\n }\n\n function nonInitializable(uint256 _x) public payable {\n x = _x;\n }\n\n function fail() public pure {\n require(false, \"InitializableMock forced failure\");\n }\n\n function secret() private pure returns (string memory) {\n return 'Im secret';\n }\n\n}\n", "sourcePath": "contracts/mocks/InitializableMock.sol", "sourceMap": "161:590:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;161:590:11;;;;;;;", "deployedSourceMap": "161:590:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;412:81;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;412:81:11;;;;;;;;;;;;;;;;;:::i;:::-;;240:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:16:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;261:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;261:73:11;;;:::i;:::-;;571:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;571:89:11;;;:::i;:::-;;210:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;210:26:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;338:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;338:70:11;;;:::i;:::-;;497;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;497:70:11;;;;;;;;;;;;;;;;;:::i;:::-;;412:81;1024:12:0;;;;;;;;;;;:31;;;;1040:15;:13;:15::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;;;;;;1151:13;1129:35;;1174:14;1170:80;;;1213:4;1198:12;;:19;;;;;;;;;;;;;;;;;;1239:4;1225:11;;:18;;;;;;;;;;;;;;;;;;1170:80;486:2:11;482:1;:6;;;;1268:14:0;1264:55;;;1307:5;1292:12;;:20;;;;;;;;;;;;;;;;;;1264:55;412:81:11;;:::o;240:16::-;;;;:::o;261:73::-;1024:12:0;;;;;;;;;;;:31;;;;1040:15;:13;:15::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;;;;;;1151:13;1129:35;;1174:14;1170:80;;;1213:4;1198:12;;:19;;;;;;;;;;;;;;;;;;1239:4;1225:11;;:18;;;;;;;;;;;;;;;;;;1170:80;325:4:11;308:14;;:21;;;;;;;;;;;;;;;;;;1268:14:0;1264:55;;;1307:5;1292:12;;:20;;;;;;;;;;;;;;;;;;1264:55;261:73:11;:::o;571:89::-;613:5;605:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;571:89::o;210:26::-;;;;;;;;;;;;;:::o;338:70::-;1024:12:0;;;;;;;;;;;:31;;;;1040:15;:13;:15::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;;;;;;1151:13;1129:35;;1174:14;1170:80;;;1213:4;1198:12;;:19;;;;;;;;;;;;;;;;;;1239:4;1225:11;;:18;;;;;;;;;;;;;;;;;;1170:80;391:12:11;:10;:12::i;:::-;1268:14:0;1264:55;;;1307:5;1292:12;;:20;;;;;;;;;;;;;;;;;;1264:55;338:70:11;:::o;497:::-;560:2;556:1;:6;;;;497:70;:::o;1409:498:0:-;1456:4;1797:12;1820:4;1797:28;;1831:10;1876:4;1864:17;1858:23;;1901:1;1895:2;:7;1888:14;;;;1409:498;:::o", "abi": [ { "constant": false, "inputs": [ { "name": "_x", "type": "uint256" } ], "name": "initializeWithX", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": true, "inputs": [], "name": "x", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "initialize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "fail", "outputs": [], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [], "name": "initializerRan", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "initializeNested", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_x", "type": "uint256" } ], "name": "nonInitializable", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" } ], "ast": { "absolutePath": "contracts/mocks/InitializableMock.sol", "exportedSymbols": { "InitializableMock": [ 1704 ] }, "id": 1705, "nodeType": "SourceUnit", "nodes": [ { "id": 1638, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:11" }, { "absolutePath": "contracts/Initializable.sol", "file": "../Initializable.sol", "id": 1639, "nodeType": "ImportDirective", "scope": 1705, "sourceUnit": 69, "src": "25:30:11", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1640, "name": "Initializable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 68, "src": "191:13:11", "typeDescriptions": { "typeIdentifier": "t_contract$_Initializable_$68", "typeString": "contract Initializable" } }, "id": 1641, "nodeType": "InheritanceSpecifier", "src": "191:13:11" } ], "contractDependencies": [ 68 ], "contractKind": "contract", "documentation": "@title InitializableMock\n@dev This contract is a mock to test initializable functionality", "fullyImplemented": true, "id": 1704, "linearizedBaseContracts": [ 1704, 68 ], "name": "InitializableMock", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 1643, "name": "initializerRan", "nodeType": "VariableDeclaration", "scope": 1704, "src": "210:26:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1642, "name": "bool", "nodeType": "ElementaryTypeName", "src": "210:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1645, "name": "x", "nodeType": "VariableDeclaration", "scope": 1704, "src": "240:16:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1644, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "240:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "body": { "id": 1654, "nodeType": "Block", "src": "302:32:11", "statements": [ { "expression": { "argumentTypes": null, "id": 1652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1650, "name": "initializerRan", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1643, "src": "308:14:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1651, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "325:4:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "308:21:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1653, "nodeType": "ExpressionStatement", "src": "308:21:11" } ] }, "documentation": null, "id": 1655, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1648, "modifierName": { "argumentTypes": null, "id": 1647, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "290:11:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "290:11:11" } ], "name": "initialize", "nodeType": "FunctionDefinition", "parameters": { "id": 1646, "nodeType": "ParameterList", "parameters": [], "src": "280:2:11" }, "returnParameters": { "id": 1649, "nodeType": "ParameterList", "parameters": [], "src": "302:0:11" }, "scope": 1704, "src": "261:73:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1663, "nodeType": "Block", "src": "385:23:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1660, "name": "initialize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "391:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 1661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "391:12:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1662, "nodeType": "ExpressionStatement", "src": "391:12:11" } ] }, "documentation": null, "id": 1664, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1658, "modifierName": { "argumentTypes": null, "id": 1657, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "373:11:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "373:11:11" } ], "name": "initializeNested", "nodeType": "FunctionDefinition", "parameters": { "id": 1656, "nodeType": "ParameterList", "parameters": [], "src": "363:2:11" }, "returnParameters": { "id": 1659, "nodeType": "ParameterList", "parameters": [], "src": "385:0:11" }, "scope": 1704, "src": "338:70:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1675, "nodeType": "Block", "src": "476:17:11", "statements": [ { "expression": { "argumentTypes": null, "id": 1673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1671, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "482:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1672, "name": "_x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1666, "src": "486:2:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "482:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1674, "nodeType": "ExpressionStatement", "src": "482:6:11" } ] }, "documentation": null, "id": 1676, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1669, "modifierName": { "argumentTypes": null, "id": 1668, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "464:11:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "464:11:11" } ], "name": "initializeWithX", "nodeType": "FunctionDefinition", "parameters": { "id": 1667, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1666, "name": "_x", "nodeType": "VariableDeclaration", "scope": 1676, "src": "437:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1665, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "437:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "436:12:11" }, "returnParameters": { "id": 1670, "nodeType": "ParameterList", "parameters": [], "src": "476:0:11" }, "scope": 1704, "src": "412:81:11", "stateMutability": "payable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1685, "nodeType": "Block", "src": "550:17:11", "statements": [ { "expression": { "argumentTypes": null, "id": 1683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1681, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, "src": "556:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1682, "name": "_x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "560:2:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "556:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1684, "nodeType": "ExpressionStatement", "src": "556:6:11" } ] }, "documentation": null, "id": 1686, "implemented": true, "kind": "function", "modifiers": [], "name": "nonInitializable", "nodeType": "FunctionDefinition", "parameters": { "id": 1679, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1678, "name": "_x", "nodeType": "VariableDeclaration", "scope": 1686, "src": "523:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1677, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "522:12:11" }, "returnParameters": { "id": 1680, "nodeType": "ParameterList", "parameters": [], "src": "550:0:11" }, "scope": 1704, "src": "497:70:11", "stateMutability": "payable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1694, "nodeType": "Block", "src": "599:61:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "66616c7365", "id": 1690, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "613:5:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "argumentTypes": null, "hexValue": "496e697469616c697a61626c654d6f636b20666f72636564206661696c757265", "id": 1691, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "620:34:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_70458f305ab12a5814a8a6125666b5faf9428e7481e52fe1e943f8addb4009b7", "typeString": "literal_string \"InitializableMock forced failure\"" }, "value": "InitializableMock forced failure" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_70458f305ab12a5814a8a6125666b5faf9428e7481e52fe1e943f8addb4009b7", "typeString": "literal_string \"InitializableMock forced failure\"" } ], "id": 1689, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 6466, 6467 ], "referencedDeclaration": 6467, "src": "605:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1692, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "605:50:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1693, "nodeType": "ExpressionStatement", "src": "605:50:11" } ] }, "documentation": null, "id": 1695, "implemented": true, "kind": "function", "modifiers": [], "name": "fail", "nodeType": "FunctionDefinition", "parameters": { "id": 1687, "nodeType": "ParameterList", "parameters": [], "src": "584:2:11" }, "returnParameters": { "id": 1688, "nodeType": "ParameterList", "parameters": [], "src": "599:0:11" }, "scope": 1704, "src": "571:89:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { "id": 1702, "nodeType": "Block", "src": "719:29:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "496d20736563726574", "id": 1700, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "732:11:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_917e1920cd22ea08a6fe16f962e32a49c23ad423aee4a52a1181dc229099e711", "typeString": "literal_string \"Im secret\"" }, "value": "Im secret" }, "functionReturnParameters": 1699, "id": 1701, "nodeType": "Return", "src": "725:18:11" } ] }, "documentation": null, "id": 1703, "implemented": true, "kind": "function", "modifiers": [], "name": "secret", "nodeType": "FunctionDefinition", "parameters": { "id": 1696, "nodeType": "ParameterList", "parameters": [], "src": "679:2:11" }, "returnParameters": { "id": 1699, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1698, "name": "", "nodeType": "VariableDeclaration", "scope": 1703, "src": "704:13:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1697, "name": "string", "nodeType": "ElementaryTypeName", "src": "704:6:11", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "703:15:11" }, "scope": 1704, "src": "664:84:11", "stateMutability": "pure", "superFunction": null, "visibility": "private" } ], "scope": 1705, "src": "161:590:11" } ], "src": "0:752:11" }, "bytecode": "0x608060405234801561001057600080fd5b506105a9806100206000396000f3fe60806040526004361061006f5760003560e01c8063a9cc47181161004e578063a9cc4718146100e4578063c3b8ef2a146100fb578063cb3a528d1461012a578063e955c9ec146101415761006f565b806218eaa8146100745780630c55699c146100a25780638129fc1c146100cd575b600080fd5b6100a06004803603602081101561008a57600080fd5b810190808035906020019092919050505061016f565b005b3480156100ae57600080fd5b506100b7610278565b6040518082815260200191505060405180910390f35b3480156100d957600080fd5b506100e261027e565b005b3480156100f057600080fd5b506100f961039a565b005b34801561010757600080fd5b50610110610412565b604051808215151515815260200191505060405180910390f35b34801561013657600080fd5b5061013f610425565b005b61016d6004803603602081101561015757600080fd5b810190808035906020019092919050505061052e565b005b600060019054906101000a900460ff168061018e575061018d610538565b5b806101a557506000809054906101000a900460ff16155b15156101fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610550602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561024c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8160348190555080156102745760008060016101000a81548160ff0219169083151502179055505b5050565b60345481565b600060019054906101000a900460ff168061029d575061029c610538565b5b806102b457506000809054906101000a900460ff16155b151561030b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610550602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561035b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6001603360006101000a81548160ff02191690831515021790555080156103975760008060016101000a81548160ff0219169083151502179055505b50565b60001515610410576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f496e697469616c697a61626c654d6f636b20666f72636564206661696c75726581525060200191505060405180910390fd5b565b603360009054906101000a900460ff1681565b600060019054906101000a900460ff16806104445750610443610538565b5b8061045b57506000809054906101000a900460ff16155b15156104b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610550602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015610502576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61050a61027e565b801561052b5760008060016101000a81548160ff0219169083151502179055505b50565b8060348190555050565b6000803090506000813b905060008114925050509056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a165627a7a72305820287277f186cfd0868034fed958b0abf0f28439fe9d0569dbc87cecb63ecb49cf0029", "deployedBytecode": "0x60806040526004361061006f5760003560e01c8063a9cc47181161004e578063a9cc4718146100e4578063c3b8ef2a146100fb578063cb3a528d1461012a578063e955c9ec146101415761006f565b806218eaa8146100745780630c55699c146100a25780638129fc1c146100cd575b600080fd5b6100a06004803603602081101561008a57600080fd5b810190808035906020019092919050505061016f565b005b3480156100ae57600080fd5b506100b7610278565b6040518082815260200191505060405180910390f35b3480156100d957600080fd5b506100e261027e565b005b3480156100f057600080fd5b506100f961039a565b005b34801561010757600080fd5b50610110610412565b604051808215151515815260200191505060405180910390f35b34801561013657600080fd5b5061013f610425565b005b61016d6004803603602081101561015757600080fd5b810190808035906020019092919050505061052e565b005b600060019054906101000a900460ff168061018e575061018d610538565b5b806101a557506000809054906101000a900460ff16155b15156101fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610550602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561024c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8160348190555080156102745760008060016101000a81548160ff0219169083151502179055505b5050565b60345481565b600060019054906101000a900460ff168061029d575061029c610538565b5b806102b457506000809054906101000a900460ff16155b151561030b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610550602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561035b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6001603360006101000a81548160ff02191690831515021790555080156103975760008060016101000a81548160ff0219169083151502179055505b50565b60001515610410576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f496e697469616c697a61626c654d6f636b20666f72636564206661696c75726581525060200191505060405180910390fd5b565b603360009054906101000a900460ff1681565b600060019054906101000a900460ff16806104445750610443610538565b5b8061045b57506000809054906101000a900460ff16155b15156104b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610550602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015610502576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61050a61027e565b801561052b5760008060016101000a81548160ff0219169083151502179055505b50565b8060348190555050565b6000803090506000813b905060008114925050509056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a165627a7a72305820287277f186cfd0868034fed958b0abf0f28439fe9d0569dbc87cecb63ecb49cf0029", "compiler": { "name": "solc", "version": "0.5.3+commit.10d17f24.Emscripten.clang", "optimizer": {}, "evmVersion": "constantinople" } }