{ "contractName": "CloneFactory", "abi": [ { "inputs": [ { "internalType": "address", "name": "prototype", "type": "address" } ], "name": "clone", "outputs": [ { "internalType": "address", "name": "proxy", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.9+commit.3e3065ac\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prototype\",\"type\":\"address\"}],\"name\":\"clone\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/CloneFactory.sol\":\"CloneFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/CloneFactory.sol\":{\"keccak256\":\"0x343dc91fe46604d9dc7583e4b969d7dbd2bcba68166bef4e608a85145e7735cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2751f30bf5bc54890d68fd6e609dea0cc5ddc08aaa928829bffda71065e66715\",\"dweb:/ipfs/QmdtAmwxpdx8VAHFKkrEPazLJmpWj1dSv2Krdd7F3uauH9\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b50610118806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638124b78e14602d575b600080fd5b603c603836600460a2565b6050565b6040516047919060ce565b60405180910390f35b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f0949350505050565b60006020828403121560b2578081fd5b81356001600160a01b038116811460c7578182fd5b9392505050565b6001600160a01b039190911681526020019056fea264697066735822122083d2cc9c947b08921b671bd416b961f22b420b13338e99f5519208d7388580a564736f6c63430006090033", "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80638124b78e14602d575b600080fd5b603c603836600460a2565b6050565b6040516047919060ce565b60405180910390f35b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f0949350505050565b60006020828403121560b2578081fd5b81356001600160a01b038116811460c7578182fd5b9392505050565b6001600160a01b039190911681526020019056fea264697066735822122083d2cc9c947b08921b671bd416b961f22b420b13338e99f5519208d7388580a564736f6c63430006090033", "immutableReferences": {}, "sourceMap": "408:607:12:-:0;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "408:607:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:560;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;514:13;539:19;569:9;561:18;;539:40;;631:4;625:11;-1:-1:-1;;;656:5:12;649:81;768:11;761:4;754:5;750:16;743:37;-1:-1:-1;;;828:4:12;821:5;817:16;793:138;970:4;963:5;960:1;953:22;944:31;453:560;-1:-1:-1;;;;453:560:12:o;142:241:-1:-;;246:2;234:9;225:7;221:23;217:32;214:2;;;-1:-1;;252:12;214:2;72:20;;-1:-1;;;;;899:54;;1024:35;;1014:2;;-1:-1;;1063:12;1014:2;304:63;208:175;-1:-1;;;208:175;510:222;-1:-1;;;;;899:54;;;;461:37;;637:2;622:18;;608:124", "source": "/*\n\n Copyright 2020 DODO ZOO.\n SPDX-License-Identifier: Apache-2.0\n\n*/\n\npragma solidity 0.6.9;\npragma experimental ABIEncoderV2;\n\ninterface ICloneFactory {\n function clone(address prototype) external returns (address proxy);\n}\n\n// introduction of proxy mode design: https://docs.openzeppelin.com/upgrades/2.8/\n// minimum implementation of transparent proxy: https://eips.ethereum.org/EIPS/eip-1167\n\ncontract CloneFactory is ICloneFactory {\n function clone(address prototype) external override returns (address proxy) {\n bytes20 targetBytes = bytes20(prototype);\n assembly {\n let clone := mload(0x40)\n mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(clone, 0x14), targetBytes)\n mstore(\n add(clone, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n proxy := create(0, clone, 0x37)\n }\n return proxy;\n }\n}\n", "sourcePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/CloneFactory.sol", "ast": { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/CloneFactory.sol", "exportedSymbols": { "CloneFactory": [ 2008 ], "ICloneFactory": [ 1986 ] }, "id": 2009, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 1977, "literals": [ "solidity", "0.6", ".9" ], "nodeType": "PragmaDirective", "src": "78:22:12" }, { "id": 1978, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "101:33:12" }, { "abstract": false, "baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 1986, "linearizedBaseContracts": [ 1986 ], "name": "ICloneFactory", "nodeType": "ContractDefinition", "nodes": [ { "body": null, "documentation": null, "functionSelector": "8124b78e", "id": 1985, "implemented": false, "kind": "function", "modifiers": [], "name": "clone", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1981, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1980, "mutability": "mutable", "name": "prototype", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1985, "src": "181:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1979, "name": "address", "nodeType": "ElementaryTypeName", "src": "181:7:12", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "180:19:12" }, "returnParameters": { "id": 1984, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1983, "mutability": "mutable", "name": "proxy", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1985, "src": "218:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1982, "name": "address", "nodeType": "ElementaryTypeName", "src": "218:7:12", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "217:15:12" }, "scope": 1986, "src": "166:67:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 2009, "src": "136:99:12" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1987, "name": "ICloneFactory", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1986, "src": "433:13:12", "typeDescriptions": { "typeIdentifier": "t_contract$_ICloneFactory_$1986", "typeString": "contract ICloneFactory" } }, "id": 1988, "nodeType": "InheritanceSpecifier", "src": "433:13:12" } ], "contractDependencies": [ 1986 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 2008, "linearizedBaseContracts": [ 2008, 1986 ], "name": "CloneFactory", "nodeType": "ContractDefinition", "nodes": [ { "baseFunctions": [ 1985 ], "body": { "id": 2006, "nodeType": "Block", "src": "529:484:12", "statements": [ { "assignments": [ 1997 ], "declarations": [ { "constant": false, "id": 1997, "mutability": "mutable", "name": "targetBytes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 2006, "src": "539:19:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" }, "typeName": { "id": 1996, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "539:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "value": null, "visibility": "internal" } ], "id": 2002, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 2000, "name": "prototype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1990, "src": "569:9:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1999, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "561:7:12", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes20_$", "typeString": "type(bytes20)" }, "typeName": { "id": 1998, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "561:7:12", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 2001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "561:18:12", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "nodeType": "VariableDeclarationStatement", "src": "539:40:12" }, { "AST": { "nodeType": "YulBlock", "src": "598:387:12", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "612:24:12", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "631:4:12", "type": "", "value": "0x40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "625:5:12" }, "nodeType": "YulFunctionCall", "src": "625:11:12" }, "variables": [ { "name": "clone", "nodeType": "YulTypedName", "src": "616:5:12", "type": "" } ] }, { "expression": { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "656:5:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "663:66:12", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "649:6:12" }, "nodeType": "YulFunctionCall", "src": "649:81:12" }, "nodeType": "YulExpressionStatement", "src": "649:81:12" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "754:5:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "761:4:12", "type": "", "value": "0x14" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "750:3:12" }, "nodeType": "YulFunctionCall", "src": "750:16:12" }, { "name": "targetBytes", "nodeType": "YulIdentifier", "src": "768:11:12" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "743:6:12" }, "nodeType": "YulFunctionCall", "src": "743:37:12" }, "nodeType": "YulExpressionStatement", "src": "743:37:12" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "821:5:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "828:4:12", "type": "", "value": "0x28" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "817:3:12" }, "nodeType": "YulFunctionCall", "src": "817:16:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "851:66:12", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "793:6:12" }, "nodeType": "YulFunctionCall", "src": "793:138:12" }, "nodeType": "YulExpressionStatement", "src": "793:138:12" }, { "nodeType": "YulAssignment", "src": "944:31:12", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "960:1:12", "type": "", "value": "0" }, { "name": "clone", "nodeType": "YulIdentifier", "src": "963:5:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "970:4:12", "type": "", "value": "0x37" } ], "functionName": { "name": "create", "nodeType": "YulIdentifier", "src": "953:6:12" }, "nodeType": "YulFunctionCall", "src": "953:22:12" }, "variableNames": [ { "name": "proxy", "nodeType": "YulIdentifier", "src": "944:5:12" } ] } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 1994, "isOffset": false, "isSlot": false, "src": "944:5:12", "valueSize": 1 }, { "declaration": 1997, "isOffset": false, "isSlot": false, "src": "768:11:12", "valueSize": 1 } ], "id": 2003, "nodeType": "InlineAssembly", "src": "589:396:12" }, { "expression": { "argumentTypes": null, "id": 2004, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1994, "src": "1001:5:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 1995, "id": 2005, "nodeType": "Return", "src": "994:12:12" } ] }, "documentation": null, "functionSelector": "8124b78e", "id": 2007, "implemented": true, "kind": "function", "modifiers": [], "name": "clone", "nodeType": "FunctionDefinition", "overrides": { "id": 1992, "nodeType": "OverrideSpecifier", "overrides": [], "src": "496:8:12" }, "parameters": { "id": 1991, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1990, "mutability": "mutable", "name": "prototype", "nodeType": "VariableDeclaration", "overrides": null, "scope": 2007, "src": "468:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1989, "name": "address", "nodeType": "ElementaryTypeName", "src": "468:7:12", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "467:19:12" }, "returnParameters": { "id": 1995, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1994, "mutability": "mutable", "name": "proxy", "nodeType": "VariableDeclaration", "overrides": null, "scope": 2007, "src": "514:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1993, "name": "address", "nodeType": "ElementaryTypeName", "src": "514:7:12", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "513:15:12" }, "scope": 2008, "src": "453:560:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 2009, "src": "408:607:12" } ], "src": "78:938:12" }, "legacyAST": { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/CloneFactory.sol", "exportedSymbols": { "CloneFactory": [ 2008 ], "ICloneFactory": [ 1986 ] }, "id": 2009, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 1977, "literals": [ "solidity", "0.6", ".9" ], "nodeType": "PragmaDirective", "src": "78:22:12" }, { "id": 1978, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "101:33:12" }, { "abstract": false, "baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 1986, "linearizedBaseContracts": [ 1986 ], "name": "ICloneFactory", "nodeType": "ContractDefinition", "nodes": [ { "body": null, "documentation": null, "functionSelector": "8124b78e", "id": 1985, "implemented": false, "kind": "function", "modifiers": [], "name": "clone", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1981, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1980, "mutability": "mutable", "name": "prototype", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1985, "src": "181:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1979, "name": "address", "nodeType": "ElementaryTypeName", "src": "181:7:12", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "180:19:12" }, "returnParameters": { "id": 1984, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1983, "mutability": "mutable", "name": "proxy", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1985, "src": "218:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1982, "name": "address", "nodeType": "ElementaryTypeName", "src": "218:7:12", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "217:15:12" }, "scope": 1986, "src": "166:67:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 2009, "src": "136:99:12" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1987, "name": "ICloneFactory", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1986, "src": "433:13:12", "typeDescriptions": { "typeIdentifier": "t_contract$_ICloneFactory_$1986", "typeString": "contract ICloneFactory" } }, "id": 1988, "nodeType": "InheritanceSpecifier", "src": "433:13:12" } ], "contractDependencies": [ 1986 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 2008, "linearizedBaseContracts": [ 2008, 1986 ], "name": "CloneFactory", "nodeType": "ContractDefinition", "nodes": [ { "baseFunctions": [ 1985 ], "body": { "id": 2006, "nodeType": "Block", "src": "529:484:12", "statements": [ { "assignments": [ 1997 ], "declarations": [ { "constant": false, "id": 1997, "mutability": "mutable", "name": "targetBytes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 2006, "src": "539:19:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" }, "typeName": { "id": 1996, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "539:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "value": null, "visibility": "internal" } ], "id": 2002, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 2000, "name": "prototype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1990, "src": "569:9:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1999, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "561:7:12", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes20_$", "typeString": "type(bytes20)" }, "typeName": { "id": 1998, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "561:7:12", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 2001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "561:18:12", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "nodeType": "VariableDeclarationStatement", "src": "539:40:12" }, { "AST": { "nodeType": "YulBlock", "src": "598:387:12", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "612:24:12", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "631:4:12", "type": "", "value": "0x40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "625:5:12" }, "nodeType": "YulFunctionCall", "src": "625:11:12" }, "variables": [ { "name": "clone", "nodeType": "YulTypedName", "src": "616:5:12", "type": "" } ] }, { "expression": { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "656:5:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "663:66:12", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "649:6:12" }, "nodeType": "YulFunctionCall", "src": "649:81:12" }, "nodeType": "YulExpressionStatement", "src": "649:81:12" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "754:5:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "761:4:12", "type": "", "value": "0x14" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "750:3:12" }, "nodeType": "YulFunctionCall", "src": "750:16:12" }, { "name": "targetBytes", "nodeType": "YulIdentifier", "src": "768:11:12" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "743:6:12" }, "nodeType": "YulFunctionCall", "src": "743:37:12" }, "nodeType": "YulExpressionStatement", "src": "743:37:12" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "821:5:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "828:4:12", "type": "", "value": "0x28" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "817:3:12" }, "nodeType": "YulFunctionCall", "src": "817:16:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "851:66:12", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "793:6:12" }, "nodeType": "YulFunctionCall", "src": "793:138:12" }, "nodeType": "YulExpressionStatement", "src": "793:138:12" }, { "nodeType": "YulAssignment", "src": "944:31:12", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "960:1:12", "type": "", "value": "0" }, { "name": "clone", "nodeType": "YulIdentifier", "src": "963:5:12" }, { "kind": "number", "nodeType": "YulLiteral", "src": "970:4:12", "type": "", "value": "0x37" } ], "functionName": { "name": "create", "nodeType": "YulIdentifier", "src": "953:6:12" }, "nodeType": "YulFunctionCall", "src": "953:22:12" }, "variableNames": [ { "name": "proxy", "nodeType": "YulIdentifier", "src": "944:5:12" } ] } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 1994, "isOffset": false, "isSlot": false, "src": "944:5:12", "valueSize": 1 }, { "declaration": 1997, "isOffset": false, "isSlot": false, "src": "768:11:12", "valueSize": 1 } ], "id": 2003, "nodeType": "InlineAssembly", "src": "589:396:12" }, { "expression": { "argumentTypes": null, "id": 2004, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1994, "src": "1001:5:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 1995, "id": 2005, "nodeType": "Return", "src": "994:12:12" } ] }, "documentation": null, "functionSelector": "8124b78e", "id": 2007, "implemented": true, "kind": "function", "modifiers": [], "name": "clone", "nodeType": "FunctionDefinition", "overrides": { "id": 1992, "nodeType": "OverrideSpecifier", "overrides": [], "src": "496:8:12" }, "parameters": { "id": 1991, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1990, "mutability": "mutable", "name": "prototype", "nodeType": "VariableDeclaration", "overrides": null, "scope": 2007, "src": "468:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1989, "name": "address", "nodeType": "ElementaryTypeName", "src": "468:7:12", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "467:19:12" }, "returnParameters": { "id": 1995, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1994, "mutability": "mutable", "name": "proxy", "nodeType": "VariableDeclaration", "overrides": null, "scope": 2007, "src": "514:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1993, "name": "address", "nodeType": "ElementaryTypeName", "src": "514:7:12", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "513:15:12" }, "scope": 2008, "src": "453:560:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 2009, "src": "408:607:12" } ], "src": "78:938:12" }, "compiler": { "name": "solc", "version": "0.6.9+commit.3e3065ac.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-11-06T08:03:35.508Z", "devdoc": { "methods": {} }, "userdoc": { "methods": {} } }