{
  "contractName": "CloneFactoryStub",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "contractCloneAddress",
          "type": "address"
        }
      ],
      "name": "ContractCloneCreated",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        }
      ],
      "name": "createClone_exposed",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_query",
          "type": "address"
        }
      ],
      "name": "isClone_exposed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "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\":\"contractCloneAddress\",\"type\":\"address\"}],\"name\":\"ContractCloneCreated\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"createClone_exposed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_query\",\"type\":\"address\"}],\"name\":\"isClone_exposed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/factory/CloneFactoryStub.sol\":\"CloneFactoryStub\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/proxy/CloneFactory.sol\":{\"keccak256\":\"0xdd6c92a00393f04b98d8749fe5e4235cfc2967d1486698a1b37db3dc6848f2f6\",\"urls\":[\"bzz-raw://ec57ffe219b198a4e494f950958e19455849e68a37d94545ddfdebb136ac17e4\",\"dweb:/ipfs/QmTcYbxJFdzdp75pcoTu83XdK1acK8rtWZNZEZz2E9HauH\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/factory/CloneFactoryStub.sol\":{\"keccak256\":\"0x5e58a6d7b0b232bfeaa687e1d2f7334ba4c177ddd64a762cafc229331af10606\",\"urls\":[\"bzz-raw://1e5344eb883b794fe817838f3fd1d96c42a8479f9d0c1932c5a424142dba5266\",\"dweb:/ipfs/QmTeD4wd69T3QcCao7NhYkZVLJ6igkXfcCZXqygKxEg3iS\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5061020c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806331c1af881461003b57806358a1957e1461007d575b600080fd5b6100696004803603604081101561005157600080fd5b506001600160a01b03813581169160200135166100bf565b604080519115158252519081900360200190f35b6100a36004803603602081101561009357600080fd5b50356001600160a01b03166100d2565b604080516001600160a01b039092168252519081900360200190f35b60006100cb8383610124565b9392505050565b6000806100de83610185565b604080516001600160a01b038316815290519192507f7c4756b565f319158dae90132615a879c6ddb073043c07baa117a816b3c758f2919081900360200190a150919050565b6000808360601b905060405169363d3d373d3d3d363d7360b01b815281600a8201526e5af43d82803e903d91602b57fd5bf360881b601e82015260408101602d600082873c600d810151600d83015114815183511416935050505092915050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f094935050505056fea265627a7a7231582030cd67e890b83fa66b6f37bc398ecf170e22cb52e780d5b720ce2ffbd94df61064736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806331c1af881461003b57806358a1957e1461007d575b600080fd5b6100696004803603604081101561005157600080fd5b506001600160a01b03813581169160200135166100bf565b604080519115158252519081900360200190f35b6100a36004803603602081101561009357600080fd5b50356001600160a01b03166100d2565b604080516001600160a01b039092168252519081900360200190f35b60006100cb8383610124565b9392505050565b6000806100de83610185565b604080516001600160a01b038316815290519192507f7c4756b565f319158dae90132615a879c6ddb073043c07baa117a816b3c758f2919081900360200190a150919050565b6000808360601b905060405169363d3d373d3d3d363d7360b01b815281600a8201526e5af43d82803e903d91602b57fd5bf360881b601e82015260408101602d600082873c600d810151600d83015114815183511416935050505092915050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f094935050505056fea265627a7a7231582030cd67e890b83fa66b6f37bc398ecf170e22cb52e780d5b720ce2ffbd94df61064736f6c63430005110032",
  "sourceMap": "98:441:32:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;98:441:32;;;;;;;",
  "deployedSourceMap": "98:441:32:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;98:441:32;;;;;;;;;;;;;;;;;;;;;;;;397:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;397:140:32;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;210:181;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;210:181:32;-1:-1:-1;;;;;210:181:32;;:::i;:::-;;;;-1:-1:-1;;;;;210:181:32;;;;;;;;;;;;;;397:140;477:11;506:24;514:7;523:6;506:7;:24::i;:::-;499:31;397:140;-1:-1:-1;;;397:140:32:o;210:181::-;274:7;292:20;315;327:7;315:11;:20::i;:::-;350:34;;;-1:-1:-1;;;;;350:34:32;;;;;;292:43;;-1:-1:-1;350:34:32;;;;;;;;;;210:181;;;;:::o;2043:818:14:-;2138:11;2165:19;2195:6;2187:15;;2165:37;;2254:4;2248:11;-1:-1:-1;;;2296:5:14;2272:127;2436:11;2430:3;2423:5;2419:15;2412:36;-1:-1:-1;;;2496:4:14;2489:5;2485:16;2461:138;2637:4;2630:5;2626:16;2684:4;2681:1;2674:5;2667;2655:34;2825:3;2818:5;2814:15;2808:22;2801:3;2794:5;2790:15;2784:22;2781:50;2756:5;2750:12;2742:5;2736:12;2733:30;2712:133;2702:143;;2221:634;;;;;;;:::o;1460:577::-;1515:14;1541:19;1571:6;1563:15;;1541:37;;1630:4;1624:11;-1:-1:-1;;;1672:5:14;1648:127;1813:11;1806:4;1799:5;1795:16;1788:37;-1:-1:-1;;;1873:4:14;1866:5;1862:16;1838:138;2016:4;2009:5;2006:1;1999:22;1989:32;1597:434;-1:-1:-1;;;;1597:434:14:o",
  "source": "pragma solidity 0.5.17;\n\nimport {CloneFactory} from \"../../../contracts/proxy/CloneFactory.sol\";\n\ncontract CloneFactoryStub is CloneFactory {\n\n    event ContractCloneCreated(address contractCloneAddress);\n\n    function createClone_exposed(address _target) external returns (address){\n        address cloneAddress = createClone(_target);\n        emit ContractCloneCreated(cloneAddress);\n    }\n\n    function isClone_exposed(address _target, address _query)external view returns (bool result){\n        return isClone(_target, _query);\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/factory/CloneFactoryStub.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/factory/CloneFactoryStub.sol",
    "exportedSymbols": {
      "CloneFactoryStub": [
        10175
      ]
    },
    "id": 10176,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10133,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:32"
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/proxy/CloneFactory.sol",
        "file": "../../../contracts/proxy/CloneFactory.sol",
        "id": 10135,
        "nodeType": "ImportDirective",
        "scope": 10176,
        "sourceUnit": 5764,
        "src": "25:71:32",
        "symbolAliases": [
          {
            "foreign": 10134,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10136,
              "name": "CloneFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5763,
              "src": "127:12:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CloneFactory_$5763",
                "typeString": "contract CloneFactory"
              }
            },
            "id": 10137,
            "nodeType": "InheritanceSpecifier",
            "src": "127:12:32"
          }
        ],
        "contractDependencies": [
          5763
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10175,
        "linearizedBaseContracts": [
          10175,
          5763
        ],
        "name": "CloneFactoryStub",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 10141,
            "name": "ContractCloneCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10139,
                  "indexed": false,
                  "name": "contractCloneAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 10141,
                  "src": "174:28:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10138,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "174:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "173:30:32"
            },
            "src": "147:57:32"
          },
          {
            "body": {
              "id": 10158,
              "nodeType": "Block",
              "src": "282:109:32",
              "statements": [
                {
                  "assignments": [
                    10149
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10149,
                      "name": "cloneAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 10158,
                      "src": "292:20:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10148,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "292:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10153,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10151,
                        "name": "_target",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10143,
                        "src": "327:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10150,
                      "name": "createClone",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5745,
                      "src": "315:11:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) returns (address)"
                      }
                    },
                    "id": 10152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "315:20:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "292:43:32"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10155,
                        "name": "cloneAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10149,
                        "src": "371:12:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10154,
                      "name": "ContractCloneCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10141,
                      "src": "350:20:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 10156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "350:34:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10157,
                  "nodeType": "EmitStatement",
                  "src": "345:39:32"
                }
              ]
            },
            "documentation": null,
            "id": 10159,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createClone_exposed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10144,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10143,
                  "name": "_target",
                  "nodeType": "VariableDeclaration",
                  "scope": 10159,
                  "src": "239:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10142,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "239:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "238:17:32"
            },
            "returnParameters": {
              "id": 10147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10146,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10159,
                  "src": "274:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10145,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "274:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "273:9:32"
            },
            "scope": 10175,
            "src": "210:181:32",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10173,
              "nodeType": "Block",
              "src": "489:48:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10169,
                        "name": "_target",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10161,
                        "src": "514:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10170,
                        "name": "_query",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10163,
                        "src": "523:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10168,
                      "name": "isClone",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5762,
                      "src": "506:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) view returns (bool)"
                      }
                    },
                    "id": 10171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "506:24:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10167,
                  "id": 10172,
                  "nodeType": "Return",
                  "src": "499:31:32"
                }
              ]
            },
            "documentation": null,
            "id": 10174,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isClone_exposed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10161,
                  "name": "_target",
                  "nodeType": "VariableDeclaration",
                  "scope": 10174,
                  "src": "422:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10160,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "422:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10163,
                  "name": "_query",
                  "nodeType": "VariableDeclaration",
                  "scope": 10174,
                  "src": "439:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10162,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "439:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "421:33:32"
            },
            "returnParameters": {
              "id": 10167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10166,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 10174,
                  "src": "477:11:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10165,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "477:4:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "476:13:32"
            },
            "scope": 10175,
            "src": "397:140:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 10176,
        "src": "98:441:32"
      }
    ],
    "src": "0:540:32"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/factory/CloneFactoryStub.sol",
      "exportedSymbols": {
        "CloneFactoryStub": [
          10175
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 10133,
        "name": "PragmaDirective",
        "src": "0:23:32"
      },
      {
        "attributes": {
          "SourceUnit": 5764,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/proxy/CloneFactory.sol",
          "file": "../../../contracts/proxy/CloneFactory.sol",
          "scope": 10176,
          "symbolAliases": [
            {
              "foreign": 10134,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 10135,
        "name": "ImportDirective",
        "src": "25:71:32"
      },
      {
        "attributes": {
          "contractDependencies": [
            5763
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            10175,
            5763
          ],
          "name": "CloneFactoryStub",
          "scope": 10176
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "CloneFactory",
                  "referencedDeclaration": 5763,
                  "type": "contract CloneFactory"
                },
                "id": 10136,
                "name": "UserDefinedTypeName",
                "src": "127:12:32"
              }
            ],
            "id": 10137,
            "name": "InheritanceSpecifier",
            "src": "127:12:32"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "ContractCloneCreated"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "contractCloneAddress",
                      "scope": 10141,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10138,
                        "name": "ElementaryTypeName",
                        "src": "174:7:32"
                      }
                    ],
                    "id": 10139,
                    "name": "VariableDeclaration",
                    "src": "174:28:32"
                  }
                ],
                "id": 10140,
                "name": "ParameterList",
                "src": "173:30:32"
              }
            ],
            "id": 10141,
            "name": "EventDefinition",
            "src": "147:57:32"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "createClone_exposed",
              "scope": 10175,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_target",
                      "scope": 10159,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10142,
                        "name": "ElementaryTypeName",
                        "src": "239:7:32"
                      }
                    ],
                    "id": 10143,
                    "name": "VariableDeclaration",
                    "src": "239:15:32"
                  }
                ],
                "id": 10144,
                "name": "ParameterList",
                "src": "238:17:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10159,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10145,
                        "name": "ElementaryTypeName",
                        "src": "274:7:32"
                      }
                    ],
                    "id": 10146,
                    "name": "VariableDeclaration",
                    "src": "274:7:32"
                  }
                ],
                "id": 10147,
                "name": "ParameterList",
                "src": "273:9:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        10149
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "cloneAddress",
                          "scope": 10158,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 10148,
                            "name": "ElementaryTypeName",
                            "src": "292:7:32"
                          }
                        ],
                        "id": 10149,
                        "name": "VariableDeclaration",
                        "src": "292:20:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5745,
                              "type": "function (address) returns (address)",
                              "value": "createClone"
                            },
                            "id": 10150,
                            "name": "Identifier",
                            "src": "315:11:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10143,
                              "type": "address",
                              "value": "_target"
                            },
                            "id": 10151,
                            "name": "Identifier",
                            "src": "327:7:32"
                          }
                        ],
                        "id": 10152,
                        "name": "FunctionCall",
                        "src": "315:20:32"
                      }
                    ],
                    "id": 10153,
                    "name": "VariableDeclarationStatement",
                    "src": "292:43:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10141,
                              "type": "function (address)",
                              "value": "ContractCloneCreated"
                            },
                            "id": 10154,
                            "name": "Identifier",
                            "src": "350:20:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10149,
                              "type": "address",
                              "value": "cloneAddress"
                            },
                            "id": 10155,
                            "name": "Identifier",
                            "src": "371:12:32"
                          }
                        ],
                        "id": 10156,
                        "name": "FunctionCall",
                        "src": "350:34:32"
                      }
                    ],
                    "id": 10157,
                    "name": "EmitStatement",
                    "src": "345:39:32"
                  }
                ],
                "id": 10158,
                "name": "Block",
                "src": "282:109:32"
              }
            ],
            "id": 10159,
            "name": "FunctionDefinition",
            "src": "210:181:32"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isClone_exposed",
              "scope": 10175,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_target",
                      "scope": 10174,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10160,
                        "name": "ElementaryTypeName",
                        "src": "422:7:32"
                      }
                    ],
                    "id": 10161,
                    "name": "VariableDeclaration",
                    "src": "422:15:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_query",
                      "scope": 10174,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10162,
                        "name": "ElementaryTypeName",
                        "src": "439:7:32"
                      }
                    ],
                    "id": 10163,
                    "name": "VariableDeclaration",
                    "src": "439:14:32"
                  }
                ],
                "id": 10164,
                "name": "ParameterList",
                "src": "421:33:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "result",
                      "scope": 10174,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 10165,
                        "name": "ElementaryTypeName",
                        "src": "477:4:32"
                      }
                    ],
                    "id": 10166,
                    "name": "VariableDeclaration",
                    "src": "477:11:32"
                  }
                ],
                "id": 10167,
                "name": "ParameterList",
                "src": "476:13:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 10167
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5762,
                              "type": "function (address,address) view returns (bool)",
                              "value": "isClone"
                            },
                            "id": 10168,
                            "name": "Identifier",
                            "src": "506:7:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10161,
                              "type": "address",
                              "value": "_target"
                            },
                            "id": 10169,
                            "name": "Identifier",
                            "src": "514:7:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10163,
                              "type": "address",
                              "value": "_query"
                            },
                            "id": 10170,
                            "name": "Identifier",
                            "src": "523:6:32"
                          }
                        ],
                        "id": 10171,
                        "name": "FunctionCall",
                        "src": "506:24:32"
                      }
                    ],
                    "id": 10172,
                    "name": "Return",
                    "src": "499:31:32"
                  }
                ],
                "id": 10173,
                "name": "Block",
                "src": "489:48:32"
              }
            ],
            "id": 10174,
            "name": "FunctionDefinition",
            "src": "397:140:32"
          }
        ],
        "id": 10175,
        "name": "ContractDefinition",
        "src": "98:441:32"
      }
    ],
    "id": 10176,
    "name": "SourceUnit",
    "src": "0:540:32"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T11:52:09.354Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}