UNPKG

hardlydifficult-ethereum-contracts

Version:
1,082 lines 87.8 kB
{ "contractName": "CloneFactoryMock", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "proxyAddress", "type": "address" } ], "name": "CloneCreated", "type": "event" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "createClone", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" } ], "name": "createClone2", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "isAddressAvailable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" } ], "name": "getClone2Address", "outputs": [ { "internalType": "address", "name": "cloneAddress", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxyAddress\",\"type\":\"address\"}],\"name\":\"CloneCreated\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"createClone\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"createClone2\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getClone2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"cloneAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"isAddressAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol\":\"CloneFactoryMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":2000000},\"remappings\":[]},\"sources\":{\"/home/circleci/repo/contracts/proxies/Clone2Factory.sol\":{\"keccak256\":\"0x20ad3c3465defae97e35187a1f74bbdfcfa5ef493d79cca00e5692fed6feeec1\",\"urls\":[\"bzz-raw://6ffd068b3b4761476990d58d23ae546eec0103fb2e5f896c31303a08d4c39c92\",\"dweb:/ipfs/QmSNL1DVqb5WX4eW4DXkuTEMYsccwkVdXb14L2SKp7Utzf\"]},\"/home/circleci/repo/contracts/proxies/Clone2Probe.sol\":{\"keccak256\":\"0x8deae8274c8fe85a34c589216b3f4081a449da2190ee5601cd38a9c53af0afa1\",\"urls\":[\"bzz-raw://86372d82fbdc52a99737977d150962365ed19052742244269f1b0322b44a7c0b\",\"dweb:/ipfs/Qmc1vGbFSoc3ssuH1Ejef2YmBdNjcCdLRZJrNJQbQb9Yv2\"]},\"/home/circleci/repo/contracts/proxies/CloneFactory.sol\":{\"keccak256\":\"0xb23450ec646fe4c1417ed869683a2020f0f83b02263e452eeb17a9e86f713389\",\"urls\":[\"bzz-raw://30c056fd32bffd39f6e63604b08bccca45dadd2ef1597efeb328ac4094d6f342\",\"dweb:/ipfs/Qmey1PvM58jNRH4yyWUjnNci7H1TA6DzpKEtEgy5BEmydq\"]},\"/home/circleci/repo/contracts/proxies/Create2Probe.sol\":{\"keccak256\":\"0xe15113008fd3548e20228b0f1f33d51650a3e92e3c83423c4511525a926fc053\",\"urls\":[\"bzz-raw://0a49c2e5cd0aa4fdc4a07a89ba400108fa44d9a2f8689a8d2d9ec39a42ede36f\",\"dweb:/ipfs/QmeZywNZFB8b56ycbdqYJgMdYgg6bKbS2f4AwcSUjif3TX\"]},\"/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol\":{\"keccak256\":\"0x967d230e8865dad7a6e1e9b50507ccc765654e4ef96524c432091fab844cbfc4\",\"urls\":[\"bzz-raw://f94140f276f667c471b4001452aac3ad58485133d8115ccd7b0642774f7b438d\",\"dweb:/ipfs/QmPQmMebmzioKFSQbTn8V5FDA8pywjH8XbuVGFZx5yfvxN\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b50610561806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063321660e41461005157806357894c1b1461008c5780639789e5bf146100bf578063dda1670f14610121575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610168565b005b61008a600480360360208110156100a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101e2565b6100f8600480360360408110156100d557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610254565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101546004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610285565b604080519115158252519081900360200190f35b600061019073ffffffffffffffffffffffffffffffffffffffff84168363ffffffff6102ae16565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a1505050565b60006102038273ffffffffffffffffffffffffffffffffffffffff16610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a15050565b600061027c73ffffffffffffffffffffffffffffffffffffffff84168363ffffffff61046416565b90505b92915050565b60006102a68273ffffffffffffffffffffffffffffffffffffffff16610501565b90505b919050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602882015260378120836101008301527fff0000000000000000000000000000000000000000000000000000000000000060408301523060601b60418301526101008201516055830152806075830152605560408301209250823b6000811461036c576000935061037b565b6101008301516037846000f593505b50505073ffffffffffffffffffffffffffffffffffffffff811661027f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f50524f58595f4445504c4f595f4641494c454400000000000000000000000000604482015290519081900360640190fd5b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09392505050565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606092831b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152603781207fff0000000000000000000000000000000000000000000000000000000000000082523090931b6001820152601581019190915260358101919091526055902090565b600073ffffffffffffffffffffffffffffffffffffffff8216610526575060006102a9565b503b159056fea265627a7a723158201f06bab68aea9bfc7a7e661031535b77d9513fdf17fe7d391142494ff207e4dd64736f6c63430005110032", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063321660e41461005157806357894c1b1461008c5780639789e5bf146100bf578063dda1670f14610121575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610168565b005b61008a600480360360208110156100a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101e2565b6100f8600480360360408110156100d557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610254565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101546004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610285565b604080519115158252519081900360200190f35b600061019073ffffffffffffffffffffffffffffffffffffffff84168363ffffffff6102ae16565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a1505050565b60006102038273ffffffffffffffffffffffffffffffffffffffff16610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a15050565b600061027c73ffffffffffffffffffffffffffffffffffffffff84168363ffffffff61046416565b90505b92915050565b60006102a68273ffffffffffffffffffffffffffffffffffffffff16610501565b90505b919050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602882015260378120836101008301527fff0000000000000000000000000000000000000000000000000000000000000060408301523060601b60418301526101008201516055830152806075830152605560408301209250823b6000811461036c576000935061037b565b6101008301516037846000f593505b50505073ffffffffffffffffffffffffffffffffffffffff811661027f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f50524f58595f4445504c4f595f4641494c454400000000000000000000000000604482015290519081900360640190fd5b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09392505050565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606092831b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152603781207fff0000000000000000000000000000000000000000000000000000000000000082523090931b6001820152601581019190915260358101919091526055902090565b600073ffffffffffffffffffffffffffffffffffffffff8216610526575060006102a9565b503b159056fea265627a7a723158201f06bab68aea9bfc7a7e661031535b77d9513fdf17fe7d391142494ff207e4dd64736f6c63430005110032", "sourceMap": "179:832:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;179:832:14;;;;;;;", "deployedSourceMap": "179:832:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;179:832:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;530:159:14;;;;;;;;;:::i;:::-;;391:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;391:135:14;;;;:::i;845:164::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;845:164:14;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;693:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;693:148:14;;;;:::i;:::-;;;;;;;;;;;;;;;;;;530:159;611:14;628:25;:19;;;648:4;628:25;:19;:25;:::i;:::-;664:20;;;;;;;;;;611:42;;-1:-1:-1;664:20:14;;;;;;;;;;530:159;;;:::o;391:135::-;453:14;470:20;:6;:18;;;:20::i;:::-;501;;;;;;;;;;453:37;;-1:-1:-1;501:20:14;;;;;;;;;;391:135;;:::o;845:164::-;938:20;975:29;:23;;;999:4;975:29;:23;:29;:::i;:::-;968:36;;845:164;;;;;:::o;693:148::-;779:4;800:36;:15;:34;;;:36::i;:::-;793:43;;693:148;;;;:::o;873:1708:8:-;959:20;1063:4;1057:11;1206:66;1197:7;1190:83;1315:6;1311:2;1307:15;1300:4;1291:7;1287:18;1280:43;1357:66;1350:4;1341:7;1337:18;1330:94;1700:4;1691:7;1681:24;1762:4;1754:5;1745:7;1741:19;1734:33;1843:66;1836:4;1827:7;1823:18;1816:94;1966:7;1962:2;1958:16;1951:4;1942:7;1938:18;1931:44;2042:5;2033:7;2029:19;2023:26;2016:4;2007:7;2003:18;1996:54;2098:16;2091:4;2082:7;2078:18;2071:44;2169:4;2162;2153:7;2149:18;2139:35;2123:51;;2201:12;2189:25;2226:1;2221:161;;;;2423:1;2407:17;;2182:250;;2221:161;2366:5;2357:7;2353:19;2347:26;2341:4;2332:7;2329:1;2321:53;2305:69;;2182:250;-1:-1:-1;;;2526:26:8;;;2518:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:452:10;485:14;581:4;575:11;607:66;600:5;593:81;714:6;710:2;706:15;699:4;692:5;688:16;681:41;754:66;747:4;740:5;736:16;729:92;855:4;848:5;845:1;838:22;828:32;554:312;-1:-1:-1;;;554:312:10:o;169:982:9:-;368:4;362:11;488:66;472:83;;593:2;589:15;;;582:4;569:18;;562:43;639:66;632:4;619:18;;612:94;785:4;766:24;;828:66;812:83;;964:7;956:16;;;950:3;937:17;;930:43;1015:4;1002:18;;995:32;;;;1069:4;1056:18;;1049:44;;;;1136:4;1117:24;;;339:808::o;170:309:11:-;258:4;275:29;;;272:65;;-1:-1:-1;325:5:11;318:12;;272:65;-1:-1:-1;418:28:11;465:9;;170:309::o", "source": "pragma solidity ^0.5.0;\n\nimport '../proxies/CloneFactory.sol';\nimport '../proxies/Clone2Factory.sol';\nimport '../proxies/Clone2Probe.sol';\nimport '../proxies/Create2Probe.sol';\n\n\ncontract CloneFactoryMock\n{\n using CloneFactory for address;\n using Clone2Factory for address;\n using Clone2Probe for address;\n using Create2Probe for address;\n\n event CloneCreated(address proxyAddress);\n\n function createClone(\n address target\n ) external\n {\n address result = target.createClone();\n emit CloneCreated(result);\n }\n\n function createClone2(\n address target,\n bytes32 salt\n ) external\n {\n address result = target.createClone2(salt);\n emit CloneCreated(result);\n }\n\n function isAddressAvailable(\n address contractAddress\n ) public view\n returns (bool)\n {\n return contractAddress.isAddressAvailable();\n }\n\n function getClone2Address(\n address target,\n bytes32 salt\n ) public view\n returns (address cloneAddress)\n {\n return target.getClone2Address(salt);\n }\n}\n", "sourcePath": "/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol", "ast": { "absolutePath": "/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol", "exportedSymbols": { "CloneFactoryMock": [ 1615 ] }, "id": 1616, "nodeType": "SourceUnit", "nodes": [ { "id": 1532, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:14" }, { "absolutePath": "/home/circleci/repo/contracts/proxies/CloneFactory.sol", "file": "../proxies/CloneFactory.sol", "id": 1533, "nodeType": "ImportDirective", "scope": 1616, "sourceUnit": 1379, "src": "25:37:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/circleci/repo/contracts/proxies/Clone2Factory.sol", "file": "../proxies/Clone2Factory.sol", "id": 1534, "nodeType": "ImportDirective", "scope": 1616, "sourceUnit": 1353, "src": "63:38:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/circleci/repo/contracts/proxies/Clone2Probe.sol", "file": "../proxies/Clone2Probe.sol", "id": 1535, "nodeType": "ImportDirective", "scope": 1616, "sourceUnit": 1367, "src": "102:36:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/circleci/repo/contracts/proxies/Create2Probe.sol", "file": "../proxies/Create2Probe.sol", "id": 1536, "nodeType": "ImportDirective", "scope": 1616, "sourceUnit": 1407, "src": "139:37:14", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 1615, "linearizedBaseContracts": [ 1615 ], "name": "CloneFactoryMock", "nodeType": "ContractDefinition", "nodes": [ { "id": 1539, "libraryName": { "contractScope": null, "id": 1537, "name": "CloneFactory", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1378, "src": "215:12:14", "typeDescriptions": { "typeIdentifier": "t_contract$_CloneFactory_$1378", "typeString": "library CloneFactory" } }, "nodeType": "UsingForDirective", "src": "209:31:14", "typeName": { "id": 1538, "name": "address", "nodeType": "ElementaryTypeName", "src": "232:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "id": 1542, "libraryName": { "contractScope": null, "id": 1540, "name": "Clone2Factory", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1352, "src": "249:13:14", "typeDescriptions": { "typeIdentifier": "t_contract$_Clone2Factory_$1352", "typeString": "library Clone2Factory" } }, "nodeType": "UsingForDirective", "src": "243:32:14", "typeName": { "id": 1541, "name": "address", "nodeType": "ElementaryTypeName", "src": "267:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "id": 1545, "libraryName": { "contractScope": null, "id": 1543, "name": "Clone2Probe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1366, "src": "284:11:14", "typeDescriptions": { "typeIdentifier": "t_contract$_Clone2Probe_$1366", "typeString": "library Clone2Probe" } }, "nodeType": "UsingForDirective", "src": "278:30:14", "typeName": { "id": 1544, "name": "address", "nodeType": "ElementaryTypeName", "src": "300:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "id": 1548, "libraryName": { "contractScope": null, "id": 1546, "name": "Create2Probe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1406, "src": "317:12:14", "typeDescriptions": { "typeIdentifier": "t_contract$_Create2Probe_$1406", "typeString": "library Create2Probe" } }, "nodeType": "UsingForDirective", "src": "311:31:14", "typeName": { "id": 1547, "name": "address", "nodeType": "ElementaryTypeName", "src": "334:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "anonymous": false, "documentation": null, "id": 1552, "name": "CloneCreated", "nodeType": "EventDefinition", "parameters": { "id": 1551, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1550, "indexed": false, "name": "proxyAddress", "nodeType": "VariableDeclaration", "scope": 1552, "src": "365:20:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1549, "name": "address", "nodeType": "ElementaryTypeName", "src": "365:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "364:22:14" }, "src": "346:41:14" }, { "body": { "id": 1567, "nodeType": "Block", "src": "447:79:14", "statements": [ { "assignments": [ 1558 ], "declarations": [ { "constant": false, "id": 1558, "name": "result", "nodeType": "VariableDeclaration", "scope": 1567, "src": "453:14:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1557, "name": "address", "nodeType": "ElementaryTypeName", "src": "453:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1562, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 1559, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "470:6:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "createClone", "nodeType": "MemberAccess", "referencedDeclaration": 1377, "src": "470:18:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$bound_to$_t_address_$", "typeString": "function (address) returns (address)" } }, "id": 1561, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "470:20:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "453:37:14" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1564, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "514:6:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1563, "name": "CloneCreated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1552, "src": "501:12:14", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 1565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "501:20:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1566, "nodeType": "EmitStatement", "src": "496:25:14" } ] }, "documentation": null, "id": 1568, "implemented": true, "kind": "function", "modifiers": [], "name": "createClone", "nodeType": "FunctionDefinition", "parameters": { "id": 1555, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1554, "name": "target", "nodeType": "VariableDeclaration", "scope": 1568, "src": "417:14:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1553, "name": "address", "nodeType": "ElementaryTypeName", "src": "417:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "411:24:14" }, "returnParameters": { "id": 1556, "nodeType": "ParameterList", "parameters": [], "src": "447:0:14" }, "scope": 1615, "src": "391:135:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { "id": 1586, "nodeType": "Block", "src": "605:84:14", "statements": [ { "assignments": [ 1576 ], "declarations": [ { "constant": false, "id": 1576, "name": "result", "nodeType": "VariableDeclaration", "scope": 1586, "src": "611:14:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1575, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1581, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1579, "name": "salt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1572, "src": "648:4:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 1577, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1570, "src": "628:6:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "createClone2", "nodeType": "MemberAccess", "referencedDeclaration": 1351, "src": "628:19:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$bound_to$_t_address_$", "typeString": "function (address,bytes32) returns (address)" } }, "id": 1580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "628:25:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "611:42:14" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1583, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1576, "src": "677:6:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1582, "name": "CloneCreated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1552, "src": "664:12:14", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 1584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "664:20:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1585, "nodeType": "EmitStatement", "src": "659:25:14" } ] }, "documentation": null, "id": 1587, "implemented": true, "kind": "function", "modifiers": [], "name": "createClone2", "nodeType": "FunctionDefinition", "parameters": { "id": 1573, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1570, "name": "target", "nodeType": "VariableDeclaration", "scope": 1587, "src": "557:14:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1569, "name": "address", "nodeType": "ElementaryTypeName", "src": "557:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1572, "name": "salt", "nodeType": "VariableDeclaration", "scope": 1587, "src": "577:12:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1571, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "577:7:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "551:42:14" }, "returnParameters": { "id": 1574, "nodeType": "ParameterList", "parameters": [], "src": "605:0:14" }, "scope": 1615, "src": "530:159:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { "id": 1598, "nodeType": "Block", "src": "787:54:14", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 1594, "name": "contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1589, "src": "800:15:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isAddressAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 1405, "src": "800:34:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)" } }, "id": 1596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "800:36:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1593, "id": 1597, "nodeType": "Return", "src": "793:43:14" } ] }, "documentation": null, "id": 1599, "implemented": true, "kind": "function", "modifiers": [], "name": "isAddressAvailable", "nodeType": "FunctionDefinition", "parameters": { "id": 1590, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1589, "name": "contractAddress", "nodeType": "VariableDeclaration", "scope": 1599, "src": "726:23:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1588, "name": "address", "nodeType": "ElementaryTypeName", "src": "726:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "720:33:14" }, "returnParameters": { "id": 1593, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1592, "name": "", "nodeType": "VariableDeclaration", "scope": 1599, "src": "779:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1591, "name": "bool", "nodeType": "ElementaryTypeName", "src": "779:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "778:6:14" }, "scope": 1615, "src": "693:148:14", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1613, "nodeType": "Block", "src": "962:47:14", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1610, "name": "salt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1603, "src": "999:4:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 1608, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "975:6:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getClone2Address", "nodeType": "MemberAccess", "referencedDeclaration": 1365, "src": "975:23:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$bound_to$_t_address_$", "typeString": "function (address,bytes32) view returns (address)" } }, "id": 1611, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "975:29:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 1607, "id": 1612, "nodeType": "Return", "src": "968:36:14" } ] }, "documentation": null, "id": 1614, "implemented": true, "kind": "function", "modifiers": [], "name": "getClone2Address", "nodeType": "FunctionDefinition", "parameters": { "id": 1604, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1601, "name": "target", "nodeType": "VariableDeclaration", "scope": 1614, "src": "876:14:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1600, "name": "address", "nodeType": "ElementaryTypeName", "src": "876:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1603, "name": "salt", "nodeType": "VariableDeclaration", "scope": 1614, "src": "896:12:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1602, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "896:7:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "870:42:14" }, "returnParameters": { "id": 1607, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1606, "name": "cloneAddress", "nodeType": "VariableDeclaration", "scope": 1614, "src": "938:20:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address